Alors voila, je viens vers vous en dernier recours, je suis face à un problème jamais vu auparavant...
Je cherche donc des pistes, donc n'hésitez pas à proposer des solutions, je les essayerai.
Voulant tester un programme php autonome qui sera appelé via un cron (et qui se trouve donc hors racine web), j'utilise la commande system().
Imaginons l'arborescence suivante :
/app/bin/monprog.php <= le prog indépendant
/www/index.php <= le script appelant, dans la racine web qui est "www"
Notez que j'ai volontairement simplifié les chemins mais que j'ai bien les bons chemins absolus dans mon code réel...
Mon code est alors le suivant dans index.php :
<?php
system('/usr/bin/php5 /app/bin/monprog.php');
Dans monprog.php :
<?php
echo 'Bonjour';
Je me retrouve avec une boucle sans fin qui plante mon navigateur... Après de très nombreux tests, il s'avère que la commande system envoyée se comporte comme si je lui envoyais le nom du fichier en cours (soit index.php)...Alors j'ai voulu tricher et passer par un shell...
La commande de index.php se transforme alors en : /app/monshell.sh
Le fichier monshell.sh est constitué comme ceci :
Code : Tout sélectionner
#!/bin/bash
/usr/bin/php5 /app/bin/monprog.php > /app/result.txt
Eh bien figurez-vous que je récupère le même bouclage...
En réalité, j'ai compris que j'avais ce bouclage car j'ai fais tourner ce script sur php5.2 alors que j'ai une fonction anonyme 5.3... Ainsi, il me donne une parse et stop le bouclage infini.
Seulement voila, c'est toujours la même chose... dans result.txt, j'obtiens : Parse error, T_FUNCTION blablabla in file index.php et non pas monprog.php !
Là, je sèche complet, alors comme dit plus haut, tout idée qui vous passerait par la tête est bonne à entendre.
Pour info, pas de safemode activé, pas de truc farfelu côté config, on est sur une release2 ovh je crois.
J'ai testé sur un autre serveur et ça marche correctement, c'est donc bien un problème local et pas général à php.