(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/>