Tester qu'une page sur un serveur distant est accessible

h2o
Eléphant du PHP | 81 Messages

26 août 2005, 18:06

Avec le code suivant, le résultat est "faux" même quand la page est accessible. Où est mon erreur ?

if (file_exists("http://www.serveur.fr/rss.php"))
{
/* le code à exécuter */
}
Jean-Marie Hoornaert - h2o
Aide au développement et formation FileMaker, xml et AppleScript

Invité
Invité n'ayant pas de compte PHPfrance

26 août 2005, 18:44

Cette fonction retourne FALSE pour les fichiers non accessibles en raison des restrictions du safe mode. Cependant, ces fichiers peuvent toujours être inclus s'ils sont dans le dossier safe_mode_include_dir.
ça peut venir de là si le serveur où il y a le fichier que tu veux applique cette restriction.
http://fr.php.net/file_exists

h2o
Eléphant du PHP | 81 Messages

26 août 2005, 18:55

Compris. Merci.

Mais alors, comment vérifier qu'un fichier est accessible ?
Jean-Marie Hoornaert - h2o
Aide au développement et formation FileMaker, xml et AppleScript

Invité
Invité n'ayant pas de compte PHPfrance

26 août 2005, 19:04

est ce que quand tu fais un fopen sur ce fichier ça te retourne quelquechose?

Eléphant du PHP | 199 Messages

26 août 2005, 19:10

sinon avec les socket peurt être :?
Les 2 font la paire : coder ET commenter :wink:

Mammouth du PHP | 1885 Messages

26 août 2005, 20:48

Bonjour,

fopen() (en mode lecture) devrait suffir à vérifier si le fichier distant est accessible. (puisqu'il s'agit d'un fichier distant selon le titre du sujet)
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Invité
Invité n'ayant pas de compte PHPfrance

26 août 2005, 21:18

fopen() (en mode lecture) devrait suffir à vérifier si le fichier distant est accessible. (puisqu'il s'agit d'un fichier distant selon le titre du sujet)
et
est ce que quand tu fais un fopen sur ce fichier ça te retourne quelquechose?
bien que je trouve la méthode un peu barbare(il faut aussi qu'il prenne en compte que le serveur peut être down et je ne sais pas pourquoi il veut faire tout ça), je voulais qu'il trouve cette solution tout seul :wink:

h2o
Eléphant du PHP | 81 Messages

26 août 2005, 21:47

je voulais qu'il trouve cette solution tout seul
Je sais bien qu'aucun forum n'est là pour faire le travail à la place du demandeur.
Un forum, c'est un peu comme une auberge espagnole où chacun trouve ce que tous y apportent.
Mais de la à dire, M. ou Mme Invité anonyme, que votre souhait est que l'interlocuteur trouve sa solution "tout seul"... :cry:
Je ne me suis pourtant pas trompé de forum, je suis bien dans "Débuter en php". ?
Jean-Marie Hoornaert - h2o
Aide au développement et formation FileMaker, xml et AppleScript

Mammouth du PHP | 1885 Messages

26 août 2005, 21:47

Bonjour,

Prochaine fois je laisserai chercher l'auteur et le participant qui voulait savoir si c'était bien un fichier distant...
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

Invité
Invité n'ayant pas de compte PHPfrance

26 août 2005, 22:00

je voulais qu'il trouve cette solution tout seul
Je sais bien qu'aucun forum n'est là pour faire le travail à la place du demandeur.
Un forum, c'est un peu comme une auberge espagnole où chacun trouve ce que tous y apportent.
Mais de la à dire, M. ou Mme Invité anonyme, que votre souhait est que l'interlocuteur trouve sa solution "tout seul"... :cry:
Je ne me suis pourtant pas trompé de forum, je suis bien dans "Débuter en php". ?
c'est pas méchant h2o, en te posant la question je te mettais sur la voie.
et puis si je te files des solutions toutes faites je te mache le travail(ça arrive aussi), et si je te mache le travail c'est pas le meilleur moyen d'apprendre des choses vu que tu n'as pas à réfléchir.

après si tu ne trouves pas revient sur le forum, que je doive répondre une fois ou plusieurs fois sur le même post c'est pas un souci pour moi.
quand je répond à un post j'essaie de ne pas lacher l'auteur, après ça dépend de mes compétences ou bien si quelqu'un répond plus intelligemment que moi.

thierry

h2o
Eléphant du PHP | 81 Messages

27 août 2005, 09:00

Je ne cherche évidemment pas des solutions toutes faites. Je voulais simplement savoir quelle syntaxe permet de vérifier qu'une page distante est accessible.
Désolé si j'ai eu un ton un peu "polémique" :oops:

La page distante est un fil info xml-rss dont j'affiche certaines parties sur mon site.
J'ai pour cela écris un feuille de transformation xsl et c'est-elle qui sélectionne le document distant.

Code : Tout sélectionner

<xsl:variable name="feed" select="document(&apos;http://www.serveur.be/rss2.php&apos;)"/>
Le code php étant mon code "passe-partout"
1. Je sélectionne un document xml
2. Je sélectionne un documen xsl
3. Je transforme le document xml avec un ou plusieurs paramètres
4. J'évalue et j'affiche le résultat.

Mais dans le cas d'un document distant, je ne suis pas certain à 100% que celui soit accessible. Et s'il ne l'est pas, j'ai un erreur php qui arrête l'affichage de ma page.

Je voulais donc simplement vérifier l'accessibilité du document xml-rss distant.
Jean-Marie Hoornaert - h2o
Aide au développement et formation FileMaker, xml et AppleScript

Invité
Invité n'ayant pas de compte PHPfrance

27 août 2005, 10:40

si tu dois être précis la solution que t'as filé smarties pourrait te convenir.

en passant par les sockets cela te permet d'établir un dialogue direct avec un serveur, donc sans passer par les surcouches des fonctions php.
cela te permet donc d'envoyer des requêtes et d'obtenir des réponses précises(en sachant que chaque serveur utilise un langage propre).

dans ton cas tu devra envoyer une requête http vers le fichier que tu dois tester, et suivant la réponse du serveur tu sauras ce qu'il en ai.
//tu établis le contact avec le serveur
$ressource_serveur=fsockopen($adresse, $port));
//tu interroge le serveur
fputs($ressource_serveur,$requête_http);
//tu récupères la réponse
fgets($ressource_serveur,256);
si tu as telnet à disposition ça peut être un bon moyen de tester tes requêtes et les réponses reçus.
http://fr2.php.net/function.fsockopen
http://www.commentcamarche.net/internet/http.php3

Invité
Invité n'ayant pas de compte PHPfrance

27 août 2005, 11:00

un p'tit oublis:
$reponse=fgets($ressource_serveur,256);
[/php]

h2o
Eléphant du PHP | 81 Messages

27 août 2005, 11:59

Si je comprends bien, $reponse est censé contenir les 256 premier caractère du documents de la requête http.

Mais je n'obtiens rien.
//tu établis le contact avec le serveur 
$ressource_serveur=fsockopen("www.ecolo-valdesambre.org"); 
//tu interroge le serveur
fputs($ressource_serveur,"http://www.ecolo-valdesambre.org/index.php5"); 
//tu récupères la réponse 
$reponse = fgets($ressource_serveur,256);
echo "Reponse= " . $reponse;
Et si j'ajoute un numéro de port (80) dans fsockopen (données facultative, comme vu dans l'aide), le chargement est considérablement ralentis, mais, mais je n'obtiens toujours rien dans $reponse

Pourtant, le site est ouvert et la page demandée existe.

Ou est mon erreur. J'ai pourtant lu l'aide pour chacune de ces lignes.
Jean-Marie Hoornaert - h2o
Aide au développement et formation FileMaker, xml et AppleScript

Invité
Invité n'ayant pas de compte PHPfrance

27 août 2005, 16:20

en ce moment je ne peux pas tester mais essaie ça:
$reket_http='GET http://www.ecolo-valdesambre.org/index.php5 HTTP/1.1';
n'oublis pas que tu dois parler le langage du serveur.
la requête que tu envois est similaire à celles que l'on met dans un navigateur, navigateur qui ensuite la traduit comme il peut dans le langage adéquat.
dans le cas présent c'est à toi d'utiliser la bonne syntaxe(regardes bien le lien vers commentçamarche).