[php] script distant avec exec()

Résolu/Fermé
didier_68 - 13 mai 2008 à 10:26
 didier_68 - 13 mai 2008 à 14:37
Bonjour à tous,

J'ai un problème en php que je n'arrive pas à résoudre:

je désire executer un script php cli placer sur un serveur distant via la commande exec().
Voici mon problème:
Si je tape dans mon navigateur web " http://xxxx.xxxx.xxxx.xxxx/fichier_script.php" => le script s'execute
Si je declenche l'appel du script via exec("http://xxxx.xxxx.xxxx.xxxx/fichier_script.php") depuis une autre page php => le script ne s'execute pas.

J'ai pourtant bien acces au fichier du script puisque j'y accede via le navigateur.
J'ai egalement mis les droits 777 à /var, /www et à fichier_script.php sur le serveur distant pour etre sur que ce n'est pas un probleme de droit (je sais que ce n'est pas bien, lol, mais la je suis en phase de test et il faut bien que j'écarte les erreus possibles)

Merci d'avance pour vos réponse si vous avez une idee de la cause de mon probleme
A voir également:

1 réponse

Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100
13 mai 2008 à 10:32
Salut,

Exec exécute une commande ou un exécutable sur le serveur, un script php n'est pas un exécutable.

Il faut que ton script php soit 'lu' par le serveur comme il le serait pas un navigateur. Utilise par exemple file_get_contents($url).
0
Merci de ta reponse,

file_get_contents a effectivement changé quelque chose, le script s'execute maintenant, merci beaucoup. Par contre, je suis confronté a un nouveau probleme car je crois que cette fonction lit uniquement un fichier, malheureusement moi je doit passer des parametres au script distant (j'ai homis ce detail pour simplifier la question au maximum) et avec file_get_contents je ne crois pas que l'on puisse le faire.

Il y'a neanmoins une chose que je ne comprend pas dans ta reponse, tu me dis qu' un script php n'est pas executable, mais un script php cli (php en ligne de commande) est identique un script perl, sauf qu'il est ecrit en php, et par consequent il peu etre executable je me trompe?
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100 > didier_68
13 mai 2008 à 11:24
Le fichier .php n'est pas exécutable en lui même, c'est l'interpréteur php qui est l'exécutable.

Tu pourrais peut-être essayer quelque chose comme
exec('php -f script.php param1=val1 param2=val2');
0
didier_68 > Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015
13 mai 2008 à 12:11
Non ca ne fonctionne toujours pas.

Je precise que le script s'execute parfaitement avec "./fichier_script.php" si je suis dans une console et avec "http://xxx.xxx.xx./fichier_script.php" si je tape l'adresse directement dans le navigateur. De plus le script fonctionne avec exec() si il est situe sur la meme machine. Le probleme apparait uniquement quand le script est sur le serveur distant.

On pourrai penser a un probleme de droit ou d'acces mais si on tape l'adresse directement dans le navigateur ca fonctionne. C'est apparament la commande exec() qui ne passe pas.

Malheuresement, je ne vois pas d'autre commande qui permette de passer des parametres en plus de l'execution du script.
La fonction "file_get_contents" a deja permis au moins de declencher le script en lisant le fichier mais par contre je ne peux pas passer de parametres avec cette fonction (enfin je crois).
0
didier_68 > didier_68
13 mai 2008 à 14:13
c'est ok, en fait il est possible de passer des parametres en utilisant la fonction "file_get_contents" en utilisant GET.

Par contre si quelqu'un sait pourquoi exec() ne fonctionne pas en reseau, je suis preneur de l'info.

Merci encore
0
Dr Zoidberg Messages postés 529 Date d'inscription jeudi 28 juin 2007 Statut Membre Dernière intervention 12 juin 2015 100 > didier_68
13 mai 2008 à 14:33
Je n'avais pas compris que tu voulais faire un exec sur un autre serveur : exec exécute une commande locale, c'est comme un shell, il ne peut exécuter que ce qui est à sa portée. Quand ton exec('fichier.php') marche en local c'est parce qu'il exécute en fait quelque chose comme 'php fichier.php' et la commande php est locale.

J'espère être clair
0