Rechercher : dans
Par :

[php] script distant avec exec()

Dernière réponse le 13 mai 2008 à 14:37:39 didier_68, le 13 mai 2008 à 10:26:50 
 Signaler ce message aux modérateurs

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

Configuration: Linux
Firefox 2.0.0.14

Meilleures réponses pour « [php] script distant avec exec() » dans :
Implantation du code Php VoirL'interprétation du code par le serveur Un script PHP est un simple fichier texte contenant des instructions écrites à l'aide de caractères ASCII 7 bits (des caractères non accentués) incluses dans un code HTML à l'aide de balises spéciales et...
PHP - Créer un moteur de recherche VoirIdée générale Le moteur de recherche ci-dessous ne correspond qu'à une idée possible de moteur de recherche simple, ne gérant qu'un seul mot clé. Le concept du fonctionnement de ce moteur est de créer une base de donnée contenant les mots clés de...

1

Dr Zoidberg, le 13 mai 2008 à 10:32:49

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).

Répondre à Dr Zoidberg

2

didier_68, le 13 mai 2008 à 11:10:50

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?

Répondre à didier_68

3

Dr Zoidberg, le 13 mai 2008 à 11:24:56

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');

Répondre à Dr Zoidberg

4

didier_68, le 13 mai 2008 à 12:11:16

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).

Répondre à didier_68

5

didier_68, le 13 mai 2008 à 14:13:33

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

Répondre à didier_68

6

Dr Zoidberg, le 13 mai 2008 à 14:33:59

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

Répondre à Dr Zoidberg

7

 didier_68, le 13 mai 2008 à 14:37:39

Ah ok je comprend mieux.

Desolé, je reconnais que j'ai pas été super clair mais c'est jamais très facile de decrire un probleme.

Par contre, tu connaitrai pas par hasard l'equivalent de exec() pour le reseau (enfin si jamais ca existe)

merci encore pour ton aide,
bonne fin de journée

Répondre à didier_68