(Courriels de diversion: <envenimerais@irrecusable-tomette.com> <affaiblirai@excusee-endosseront.com> <pleurarde@haler-guerissait.com> <garconne@amenes-fêtait.com> <remplacons@narreriez-apprehende.com> <violentera@ramasserait-mandais.com> <deroberaient@numeroteront-joins.com> <monotheisme@femoraux-liquidable.com> <incapacites@gouailleur-bestialite.com> <entier@malaisees-decalogue.com> )
On Mon, Feb 18, 2002 at 10:13:53PM +0200, Pierre Estrem wrote: > Bonsoir, Bonjour, > >MC> je crois que soit : > >MC> - je n'ai rien compris a ce qu'etait un lien symbolique sur > >un systeme de fichier unix (ext2, ufs, ffs etc) > >MC> - tu n'as rien compris a ce qu'etait un lien symbolique sur > >un systeme de fichier unix (ext2, ufs, ffs etc) > > Il y a certainement des deux cas, mais étant humble, je dis qu'il y a bien > plus du cas 2 que du cas 1. > Cela dit, avant d'incendier, faudrait tester le bout de code que je > synthétise: je n'incendie pas, je faisais remarquer que tu t'embarques t'en une mauvaise direction. il m'a semble etrange que personne ne t'ai repris avant moi hier soir. > $ ln -s http://localhost/ link > Puis dans un fichier PHP dans Apache: > <? > $file = "link" ; > if (! filetype ("$file") ) { > $url = readlink ("$file") ; > $fcontents = file ("$url") ; > while ( list ($no, $ligne) = each ($fcontents) ) > { > echo "$ligne<br>" ; > } > } > else die ("'$file' n'est pas un lien vers un fichier distant") ; > ?> bon, en l'etat, chez moi ca ne marche pas : mat@miranda:~/test$ ls -ltotal 4 lrwxrwxrwx 1 mat users 17 Feb 19 12:08 link -> http://localhost/ -rw-r--r-- 1 mat users 918 Feb 19 12:09 t.php mat@miranda:~/test$ t.php contient le bout de code que tu nous a donne, au saut de ligne dans le die pres : mat@miranda:~/test$ cat t.php <? $file = "/home/mat/test/link" ; if (! filetype ("$file") ) { $url = readlink ("$file") ; $fcontents = file ("$url") ; while ( list ($no, $ligne) = each ($fcontents) ) { echo "$ligne<br>" ; } } else die ("'$file' n'est pas un lien vers un fichier distant\n") ; ?> mat@miranda:~/test$mat@miranda:~/test$ php -q t.php '/home/mat/test/link' n'est pas un lien vers un fichier distant mat@miranda:~/test$ bon, je vire le test sur filetype qui d'ailleurs est faux. mat@miranda:~/test$ cat t.php <? $file = "/home/mat/test/link" ; // if (! filetype ("$file") ) { $url = readlink ("$file") ; $fcontents = file ("$url") ; while ( list ($no, $ligne) = each ($fcontents) ) { echo "$ligne<br>" ; } // } // else die ("'$file' n'est pas un lien vers un fichier // distant\n") ; ?> mat@miranda:~/test$mat@miranda:~/test$ php -q t.php[ ... pouf, le html de la page http://localhost/ ... ] donc on dirait que ca marche ... on dirait seulement, j'en veux pour preuve tes deboires : > Ben ce truc là ouvre la page par défaut du DocumentRoot d'Apache.:-) > C'est vrai que faire qu'il pointe sur une ressource avec le protocole HTTP > n'a pas de sens, et pourtant ça marche. > Ou plutôt ça marche en localhost: je n'ai pas la possiblité de faire le > test qd la ressource est située sur un serveur web distant. > En toute bonne intelligence, il serait honnête que MC (et TB tant qu'à > faire) teste la chose et nous en fasse part. reprenons la documentation : http://www.php.net/manual/fr/html/function.readlink.html " readlink -- Renvoie le nom du fichier vers lequel pointe un lien symbolique. ... readlink() fait la même chose que la fonction readlink en C : elle retourne le contenu du lien symbolique repéré par path, ou FALSE en cas d'erreur. " bien, passons au man 2 readlink : SYNOPSIS #include <unistd.h> int readlink(const char *path, char *buf, size_t bufsiz); DESCRIPTION readlink places the contents of the symbolic link path in the buffer buf, which has size bufsiz. readlink does not append a NUL character to buf. It will truncate the con- tents (to a length of bufsiz characters), in case the buffer is too small to hold all of the contents. ok, on est bien d'accord sur ca, pas d'incomprehension possible : le readlink de php, comme son homologue en C, ou meme la commande shell du meme nom, retourne le nom du fichier pointe : dans notre cas : 'http://localhost/' mat@miranda:~/test$ readlink link http://localhost/ mat@miranda:~/test$ dans ton code : $url = readlink ("$file") ; $url contient "http://localhost" et file("http://localhost") ca marche :) de la meme maniere : mat@miranda:~/test$ ln -sf http://www.yahoo.com/ link mat@miranda:~/test$ php -q t.php[ plein de html de chez yahoo ] mais ca ne veut pas dire que ton lien pointe sur une page web, ca veut juste dire que le nom du fichier (inexistant) pointe par ton lien, et que tu recuperes via readlink, est une url. > Il pourra égm me (nous) apprendre dans ce type de lien bizarre, comment est > stockée l'information (i-node...). ca je ne sais pas du tout. je suppose que cela depend un peu du systeme de fichier employe. voila, j'espere m'etre fait mieux compris. bonne journee a tout le monde. -- mat --------------------------------------------------------------------- Aide sur la liste: <URL:mailto:linux-31-help@CULTe.org>Le CULTe sur le web: <URL:http://www.CULTe.org/>