mon objectif est le suivant : Je veux executer un script php hébergé sur un
site distant (contenant un environnement d'execution php avec apache)
depuis un script php local. Bon jusque là, tout va bien, sauf que je ne peux
pas appeler une URL en HTTP( genre un header ou un getURL en javascript...)
car mon script tourne sous php CLI( c'est peut être une mauvaise raison soit
dit en passant :-) ).
Je fais donc un truc du genre : fopen(http://monsite/toto.php, "r");
j'ai fait le test avec un fichier de test : le fichier toto.php fait un
simple echo.
je récupère une erreur time out:
Warning: fopen(http://monsite/toto.php): failed to open stream: Connection
timed out in /var/path/monscriptLOCAL.php on line <la ligne du fopen>
dans la mesure ou toto.php fait juste un echo, le temp d'execution ne
devrait pas poser de pb. Je ne sais pas trop quoi faire.
Il me semblait que le fopen permettait d'executer...
J'ai regardé dans la documentation php le chapitre sur CURL. Me
conseilleriez-vous de passer par là ?
Je cherche le moyen le plus simple possible, sachant que je n'ai pas
forcément besoin d'avoir un retour sur l'execution de toto.php, cela peut se
faire de manière asynchrone.
J'ai vu des posts sur des forums ou l'on conseillait d'utiliser include,
mais je ne suis pas sûr non plus de la pertinence d'une telle solution.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
John GALLET
Bonjour,
depuis un script php local. Bon jusque là, tout va bien, sauf que je ne peux pas appeler une URL en HTTP( genre un header ou un getURL en javascript...) car mon script tourne sous php CLI( c'est peut être une mauvaise raison soit dit en passant :-) ). Lequel tourne en CLI ? Le local ou le distant à appeler ? Si c'est le
local, http://fr2.php.net/manual/en/ref.curl.php si c'est le disant, ça n'a tout simplement pas de sens, à moins qu'il ne soit à l'écoute sur une socket (et donc ça reste, en PHP, du bricolage).
Je fais donc un truc du genre : fopen(http://monsite/toto.php, "r");
1) http://fr2.php.net/manual/en/ref.filesystem.php#ini.allow-url-fopen 2) que donne, depuis la machine locale en shell, la commande : telnet http://monsite/ 80 (dit autrement est-ce que les machines se voient sur le réseau)
Il me semblait que le fopen permettait d'executer... Y'a plus simple...
J'ai regardé dans la documentation php le chapitre sur CURL. Me conseilleriez-vous de passer par là ? Oui.
J'ai vu des posts sur des forums ou l'on conseillait d'utiliser include, mais je ne suis pas sûr non plus de la pertinence d'une telle solution.
C'est la faille de sécurité spécifique PHP numéro un qui reste dans les scripts un peu partout, mais dans ton cas le mécanisme est approprié si tu as confiance/si tu maitrîses le contenu du script distant, attention néanmoins, si http://monsite/toto.php renvoie du code php valide, il sera exécuté sur la machine locale (principe même de la faille).
a++; JG
Bonjour,
depuis un script php local. Bon jusque là, tout va bien, sauf que je ne peux
pas appeler une URL en HTTP( genre un header ou un getURL en javascript...)
car mon script tourne sous php CLI( c'est peut être une mauvaise raison soit
dit en passant :-) ).
Lequel tourne en CLI ? Le local ou le distant à appeler ? Si c'est le
local, http://fr2.php.net/manual/en/ref.curl.php si c'est le disant, ça
n'a tout simplement pas de sens, à moins qu'il ne soit à l'écoute sur
une socket (et donc ça reste, en PHP, du bricolage).
Je fais donc un truc du genre : fopen(http://monsite/toto.php, "r");
1) http://fr2.php.net/manual/en/ref.filesystem.php#ini.allow-url-fopen
2) que donne, depuis la machine locale en shell, la commande : telnet
http://monsite/ 80
(dit autrement est-ce que les machines se voient sur le réseau)
Il me semblait que le fopen permettait d'executer...
Y'a plus simple...
J'ai regardé dans la documentation php le chapitre sur CURL. Me
conseilleriez-vous de passer par là ?
Oui.
J'ai vu des posts sur des forums ou l'on conseillait d'utiliser include,
mais je ne suis pas sûr non plus de la pertinence d'une telle solution.
C'est la faille de sécurité spécifique PHP numéro un qui reste dans les
scripts un peu partout, mais dans ton cas le mécanisme est approprié si
tu as confiance/si tu maitrîses le contenu du script distant, attention
néanmoins, si http://monsite/toto.php renvoie du code php valide, il
sera exécuté sur la machine locale (principe même de la faille).
depuis un script php local. Bon jusque là, tout va bien, sauf que je ne peux pas appeler une URL en HTTP( genre un header ou un getURL en javascript...) car mon script tourne sous php CLI( c'est peut être une mauvaise raison soit dit en passant :-) ). Lequel tourne en CLI ? Le local ou le distant à appeler ? Si c'est le
local, http://fr2.php.net/manual/en/ref.curl.php si c'est le disant, ça n'a tout simplement pas de sens, à moins qu'il ne soit à l'écoute sur une socket (et donc ça reste, en PHP, du bricolage).
Je fais donc un truc du genre : fopen(http://monsite/toto.php, "r");
1) http://fr2.php.net/manual/en/ref.filesystem.php#ini.allow-url-fopen 2) que donne, depuis la machine locale en shell, la commande : telnet http://monsite/ 80 (dit autrement est-ce que les machines se voient sur le réseau)
Il me semblait que le fopen permettait d'executer... Y'a plus simple...
J'ai regardé dans la documentation php le chapitre sur CURL. Me conseilleriez-vous de passer par là ? Oui.
J'ai vu des posts sur des forums ou l'on conseillait d'utiliser include, mais je ne suis pas sûr non plus de la pertinence d'une telle solution.
C'est la faille de sécurité spécifique PHP numéro un qui reste dans les scripts un peu partout, mais dans ton cas le mécanisme est approprié si tu as confiance/si tu maitrîses le contenu du script distant, attention néanmoins, si http://monsite/toto.php renvoie du code php valide, il sera exécuté sur la machine locale (principe même de la faille).
a++; JG
Laurent
Bonjour,
salut
Je fais donc un truc du genre : fopen(http://monsite/toto.php, "r"); j'ai fait le test avec un fichier de test : le fichier toto.php fait un simple echo.
tu devrais plutôt essayer fopen("http://monsite/toto.php","r"); De rajouter des guillemets, quoi. Et je rajoute que même si ton fichier fait un simple echo, le fait de faire un fopen() n'affichera rien, cela ne fait qu'ouvrir une connexion vers le fichier, après il faut le traiter.
je récupère une erreur time out: Warning: fopen(http://monsite/toto.php): failed to open stream: Connection timed out in /var/path/monscriptLOCAL.php on line <la ligne du fopen>
dans la mesure ou toto.php fait juste un echo, le temp d'execution ne devrait pas poser de pb. Je ne sais pas trop quoi faire.
Ce n'est pas un problème de temps d'exécution ou autre problème lié au fichier en lui-même à priori, mais bien un problème de connexion. Ce peut être donc un problème lié à la sécurité de ton serveur, tu peux par exemple regarder du côté de allow_url_fopen dans ton php.ini : s'il est à false, tu ne peux pas accéder à un fichier distant...
Il me semblait que le fopen permettait d'executer... J'ai regardé dans la documentation php le chapitre sur CURL. Me conseilleriez-vous de passer par là ?
ca revient au même d'une part et ca n'a rien à voir d'autre part :) CURL est une librairie permettant d'"émuler" une navigation internet, par exemple passer des variables en post comme si tu avais cliqué sur le bouton d'un formulaire, et bien d'autres choses.
Je cherche le moyen le plus simple possible, sachant que je n'ai pas forcément besoin d'avoir un retour sur l'execution de toto.php, cela peut se faire de manière asynchrone.
pour moi le moyen est le bon
J'ai vu des posts sur des forums ou l'on conseillait d'utiliser include, mais je ne suis pas sûr non plus de la pertinence d'une telle solution.
Ca ne changera rien... Si le fopen() ne fonctionne pas, le include() ne fonctionnera pas mieux. Par contre si le but est de faire un simple echo, le include() sera plus simple que de faire un fopen() et ce qui va derrière... Mais tu n'en n'es pas encore là :)
Bonjour,
salut
Je fais donc un truc du genre : fopen(http://monsite/toto.php, "r");
j'ai fait le test avec un fichier de test : le fichier toto.php fait un
simple echo.
tu devrais plutôt essayer fopen("http://monsite/toto.php","r");
De rajouter des guillemets, quoi.
Et je rajoute que même si ton fichier fait un simple echo, le fait de
faire un fopen() n'affichera rien, cela ne fait qu'ouvrir une connexion
vers le fichier, après il faut le traiter.
je récupère une erreur time out:
Warning: fopen(http://monsite/toto.php): failed to open stream: Connection
timed out in /var/path/monscriptLOCAL.php on line <la ligne du fopen>
dans la mesure ou toto.php fait juste un echo, le temp d'execution ne
devrait pas poser de pb. Je ne sais pas trop quoi faire.
Ce n'est pas un problème de temps d'exécution ou autre problème lié au
fichier en lui-même à priori, mais bien un problème de connexion. Ce
peut être donc un problème lié à la sécurité de ton serveur, tu peux par
exemple regarder du côté de allow_url_fopen dans ton php.ini : s'il est
à false, tu ne peux pas accéder à un fichier distant...
Il me semblait que le fopen permettait d'executer...
J'ai regardé dans la documentation php le chapitre sur CURL. Me
conseilleriez-vous de passer par là ?
ca revient au même d'une part et ca n'a rien à voir d'autre part :) CURL
est une librairie permettant d'"émuler" une navigation internet, par
exemple passer des variables en post comme si tu avais cliqué sur le
bouton d'un formulaire, et bien d'autres choses.
Je cherche le moyen le plus simple possible, sachant que je n'ai pas
forcément besoin d'avoir un retour sur l'execution de toto.php, cela peut se
faire de manière asynchrone.
pour moi le moyen est le bon
J'ai vu des posts sur des forums ou l'on conseillait d'utiliser include,
mais je ne suis pas sûr non plus de la pertinence d'une telle solution.
Ca ne changera rien... Si le fopen() ne fonctionne pas, le include() ne
fonctionnera pas mieux. Par contre si le but est de faire un simple
echo, le include() sera plus simple que de faire un fopen() et ce qui va
derrière... Mais tu n'en n'es pas encore là :)
Je fais donc un truc du genre : fopen(http://monsite/toto.php, "r"); j'ai fait le test avec un fichier de test : le fichier toto.php fait un simple echo.
tu devrais plutôt essayer fopen("http://monsite/toto.php","r"); De rajouter des guillemets, quoi. Et je rajoute que même si ton fichier fait un simple echo, le fait de faire un fopen() n'affichera rien, cela ne fait qu'ouvrir une connexion vers le fichier, après il faut le traiter.
je récupère une erreur time out: Warning: fopen(http://monsite/toto.php): failed to open stream: Connection timed out in /var/path/monscriptLOCAL.php on line <la ligne du fopen>
dans la mesure ou toto.php fait juste un echo, le temp d'execution ne devrait pas poser de pb. Je ne sais pas trop quoi faire.
Ce n'est pas un problème de temps d'exécution ou autre problème lié au fichier en lui-même à priori, mais bien un problème de connexion. Ce peut être donc un problème lié à la sécurité de ton serveur, tu peux par exemple regarder du côté de allow_url_fopen dans ton php.ini : s'il est à false, tu ne peux pas accéder à un fichier distant...
Il me semblait que le fopen permettait d'executer... J'ai regardé dans la documentation php le chapitre sur CURL. Me conseilleriez-vous de passer par là ?
ca revient au même d'une part et ca n'a rien à voir d'autre part :) CURL est une librairie permettant d'"émuler" une navigation internet, par exemple passer des variables en post comme si tu avais cliqué sur le bouton d'un formulaire, et bien d'autres choses.
Je cherche le moyen le plus simple possible, sachant que je n'ai pas forcément besoin d'avoir un retour sur l'execution de toto.php, cela peut se faire de manière asynchrone.
pour moi le moyen est le bon
J'ai vu des posts sur des forums ou l'on conseillait d'utiliser include, mais je ne suis pas sûr non plus de la pertinence d'une telle solution.
Ca ne changera rien... Si le fopen() ne fonctionne pas, le include() ne fonctionnera pas mieux. Par contre si le but est de faire un simple echo, le include() sera plus simple que de faire un fopen() et ce qui va derrière... Mais tu n'en n'es pas encore là :)
Jean-Francois Ortolo
Nicolas ROBERT wrote:
Bonjour,
mon objectif est le suivant : Je veux executer un script php hébergé sur un site distant (contenant un environnement d'execution php avec apache) depuis un script php local. Bon jusque là, tout va bien, sauf que je ne peux pas appeler une URL en HTTP( genre un header ou un getURL en javascript...) car mon script tourne sous php CLI( c'est peut être une mauvaise raison soit dit en passant :-) ).
<...>
J'ai regardé dans la documentation php le chapitre sur CURL. Me conseilleriez-vous de passer par là ?
Effectivement
CURL est la réponse à ton problème, que je me suis moi-même posé, et que j'ai résolu, en pouvant même simuler le downloading d'un fichier *.csv , que le script PHP que j'appelais par l'intermédiaire de mon script, donnait à sauvegarder à l'utilisateur ( quand celui-ci déclenchait le script PHP directement, au lieu de passer par mon script. )
Je recevais le contenu de ce fichier par HTTP donc, directement dans le contenu de la variable chaîne rendue par la fonction: curl_exec($ch);
Il suffit pour simuler une connexion HTTP, de fixer le bon paramétrage dans la fonction ( curl_setopt($ch, ...) je crois, plus sûr... ), après avoir lancé $ch=curl_init(); , puis de lancer curl_exec($ch); puis curl_close($ch);
...Avec traitement d'erreur ad hoc, bien sûr, comme tout programmeur qui se respecte.
En fait, avec un bon paramétrage tu peux simuler, que ce soit une connexion HTTP, ou une connexion FTP, ou je ne sais quoi encore...
Le PHP Manual est ton ami.
Bien à toi.
Jean Francois Ortolo
-- Mon site donne des Statistiques et des Historiques Graphiques gratuits sur les Courses de Chevaux du PMU. http://www.ortolojf-courses.com
Nicolas ROBERT wrote:
Bonjour,
mon objectif est le suivant : Je veux executer un script php hébergé sur un
site distant (contenant un environnement d'execution php avec apache)
depuis un script php local. Bon jusque là, tout va bien, sauf que je ne peux
pas appeler une URL en HTTP( genre un header ou un getURL en javascript...)
car mon script tourne sous php CLI( c'est peut être une mauvaise raison soit
dit en passant :-) ).
<...>
J'ai regardé dans la documentation php le chapitre sur CURL. Me
conseilleriez-vous de passer par là ?
Effectivement
CURL est la réponse à ton problème, que je me suis moi-même posé, et
que j'ai résolu, en pouvant même simuler le downloading d'un fichier
*.csv , que le script PHP que j'appelais par l'intermédiaire de mon
script, donnait à sauvegarder à l'utilisateur ( quand celui-ci
déclenchait le script PHP directement, au lieu de passer par mon script. )
Je recevais le contenu de ce fichier par HTTP donc, directement dans
le contenu de la variable chaîne rendue par la fonction: curl_exec($ch);
Il suffit pour simuler une connexion HTTP, de fixer le bon
paramétrage dans la fonction ( curl_setopt($ch, ...) je crois, plus
sûr... ), après avoir lancé $ch=curl_init(); , puis de lancer
curl_exec($ch); puis curl_close($ch);
...Avec traitement d'erreur ad hoc, bien sûr, comme tout programmeur
qui se respecte.
En fait, avec un bon paramétrage tu peux simuler, que ce soit une
connexion HTTP, ou une connexion FTP, ou je ne sais quoi encore...
Le PHP Manual est ton ami.
Bien à toi.
Jean Francois Ortolo
--
Mon site donne des Statistiques
et des Historiques Graphiques gratuits
sur les Courses de Chevaux du PMU.
http://www.ortolojf-courses.com
mon objectif est le suivant : Je veux executer un script php hébergé sur un site distant (contenant un environnement d'execution php avec apache) depuis un script php local. Bon jusque là, tout va bien, sauf que je ne peux pas appeler une URL en HTTP( genre un header ou un getURL en javascript...) car mon script tourne sous php CLI( c'est peut être une mauvaise raison soit dit en passant :-) ).
<...>
J'ai regardé dans la documentation php le chapitre sur CURL. Me conseilleriez-vous de passer par là ?
Effectivement
CURL est la réponse à ton problème, que je me suis moi-même posé, et que j'ai résolu, en pouvant même simuler le downloading d'un fichier *.csv , que le script PHP que j'appelais par l'intermédiaire de mon script, donnait à sauvegarder à l'utilisateur ( quand celui-ci déclenchait le script PHP directement, au lieu de passer par mon script. )
Je recevais le contenu de ce fichier par HTTP donc, directement dans le contenu de la variable chaîne rendue par la fonction: curl_exec($ch);
Il suffit pour simuler une connexion HTTP, de fixer le bon paramétrage dans la fonction ( curl_setopt($ch, ...) je crois, plus sûr... ), après avoir lancé $ch=curl_init(); , puis de lancer curl_exec($ch); puis curl_close($ch);
...Avec traitement d'erreur ad hoc, bien sûr, comme tout programmeur qui se respecte.
En fait, avec un bon paramétrage tu peux simuler, que ce soit une connexion HTTP, ou une connexion FTP, ou je ne sais quoi encore...
Le PHP Manual est ton ami.
Bien à toi.
Jean Francois Ortolo
-- Mon site donne des Statistiques et des Historiques Graphiques gratuits sur les Courses de Chevaux du PMU. http://www.ortolojf-courses.com