Discussion:
glob() et suivi de liens
(trop ancien pour répondre)
Hugolino
2011-06-30 20:24:02 UTC
Permalink
Yo!!!

Je duplique mon petit serveur LAMP d'un PC sous Debian (2.6.26) à un
portable sous Arch Linux (2.6.39).

Ce serveur me permet d'accéder à mes 6000 mp3 à travers le web.

/var/www/zik/ (sur une partition /root en ext3) contient donc 6000 liens
symboliques vers les 6000 mp3 qui résident dans /home/zik/ (sur une
autre partition aussi en ext3).

Sur la Debian (PHP Version 5.2.6-1+lenny12), le script marche sans
problème : il affiche bien la liste de tous les artistes parce que la
fonction glob() qui scanne /var/www/zik/ retourne bien un tableau
contenant la liste des fichiers.

Par contre, sur le portable (PHP Version 5.3.6), les mp3 sont sur une
partition vfat (parce que je veux que ces mp3 soient accessibles depuis
Windows Seven), et là j'ai un problème : glob() ne remplit pas le
tableau "fichier"...

$fichier = glob( $liste_fichiers_repertoire); //tableau contenant tous les fchiers mp3
echo '<!-- glob liste mp3s : ///'.$fichier['0'].'///-->'."\n\n";
echo '<!-- glob liste mp3s : ///'.$fichier['1'].'///-->'."\n\n";
if ( $fichier['0'] != '' ) { // Si au moins un mp3 a été trouvé


Si je déplace une centaine de mp3 sur une partition ext3 (pas assez de
place libre pour en mettre plus), j'ai pu voir que mon script retombe en
marche.

Pire !!
Sur la debian, j'ai créé une partition vfat, et j'ai fait pointer les
liens symboliques des mp3 que j'y ai déposés vers /var/www/zik/ : mon
script n'a aucun problème pour prendre en compte ces nouveaux liens
symboliques.

J'ai googlé, mais sans trouver aucune référence à un quelconque problème
de cette fonction glob() qui serait lié au système de fichier des
partitions.

En désespoir de cause, je mets deux liens vers phpinfo() de chaque
serveur :

Le vieux PC et sa Debian qui roulaize DLMKT : http://tinyurl.com/3gejtuz
Le portable sous Arch qui pose problème : http://tinyurl.com/3mtxvpj


Merci de vos avis.
--
Dictature _éclairée_, s'il te plaît. :-)
Les leds du switch qui clignotent, c'est moyen comme éclairage.
Hugo (né il y a 1 488 892 100 secondes)
Olivier Miakinen
2011-06-30 20:52:36 UTC
Permalink
Bonjour,
Post by Hugolino
Je duplique mon petit serveur LAMP d'un PC sous Debian (2.6.26) à un
portable sous Arch Linux (2.6.39).
Ce serveur me permet d'accéder à mes 6000 mp3 à travers le web.
/var/www/zik/ (sur une partition /root en ext3) contient donc 6000 liens
symboliques vers les 6000 mp3 qui résident dans /home/zik/ (sur une
autre partition aussi en ext3).
Sur la Debian (PHP Version 5.2.6-1+lenny12), le script marche sans
problème : il affiche bien la liste de tous les artistes parce que la
fonction glob() qui scanne /var/www/zik/ retourne bien un tableau
contenant la liste des fichiers.
Par contre, sur le portable (PHP Version 5.3.6), les mp3 sont sur une
partition vfat (parce que je veux que ces mp3 soient accessibles depuis
Windows Seven), et là j'ai un problème : glob() ne remplit pas le
tableau "fichier"...
<cit. http://fr.php.net/glob>
... les règles utilisées par la fonction glob() de la libc ...
</cit.>

Est-ce que tu as les moyens de faire le test avec un programme en C ?
Post by Hugolino
$fichier = glob( $liste_fichiers_repertoire); //tableau contenant tous les fchiers mp3
On pourrait savoir ce que vaut $liste_fichiers_repertoire sur chacune
des deux machines ?
Post by Hugolino
echo '<!-- glob liste mp3s : ///'.$fichier['0'].'///-->'."\n\n";
echo '<!-- glob liste mp3s : ///'.$fichier['1'].'///-->'."\n\n";
if ( $fichier['0'] != '' ) { // Si au moins un mp3 a été trouvé
Ce test est un peu risqué, si tu te retrouves dans le cas signalé dans
la doc où glob() retourne false. Voici une suggestion faite dans les
commentaires :

if (is_array($fichier) && count($fichier) > 0) { // Au moins un mp3
Post by Hugolino
Si je déplace une centaine de mp3 sur une partition ext3 (pas assez de
place libre pour en mettre plus), j'ai pu voir que mon script retombe en
marche.
Et si tu n'as qu'une centaine de mp3 sur une partition vfat, ça dit
quoi ? Ceci pour voir si la limitation est sur le type de filesystem
ou plutôt sur le nombre de résultats...
Post by Hugolino
Pire !!
Sur la debian, j'ai créé une partition vfat, et j'ai fait pointer les
liens symboliques des mp3 que j'y ai déposés vers /var/www/zik/ : mon
script n'a aucun problème pour prendre en compte ces nouveaux liens
symboliques.
Ceci semble innocenter le type de filesystem.
Post by Hugolino
J'ai googlé, mais sans trouver aucune référence à un quelconque problème
de cette fonction glob() qui serait lié au système de fichier des
partitions.
Voilà qui semble encore confirmer mon intuition.
Post by Hugolino
En désespoir de cause, je mets deux liens vers phpinfo() de chaque
Le vieux PC et sa Debian qui roulaize DLMKT : http://tinyurl.com/3gejtuz
Le portable sous Arch qui pose problème : http://tinyurl.com/3mtxvpj
Sur http://fr.php.net/glob il est question entre autres choses de la
directive open_basedir :
http://fr.php.net/manual/fr/ini.core.php#ini.open-basedir

Or justement, il y a une différence entre tes deux systèmes :

<cit. http://roulaize.fr/phpinfo/>
open_basedir no value no value
</>

<cit. http://roulaize.fr:82/phpinfo/>
open_basedir
/srv/http/:/home/:/tmp/:/usr/share/pear/:/var/www/:/var/www-stats/:/var/www-logs/
/srv/http/:/home/:/tmp/:/usr/share/pear/:/var/www/:/var/www-stats/:/var/www-logs/
</>

Est-ce que tes fichiers sont bien sous /var/www ou un autre répertoire
accessible ?
Hugolino
2011-07-01 08:07:38 UTC
Permalink
Post by Olivier Miakinen
Post by Hugolino
[...]
Par contre, sur le portable (PHP Version 5.3.6), les mp3 sont sur
une partition vfat <...>, et là j'ai un problème : glob() ne remplit
pas le tableau "fichier"...
<cit. http://fr.php.net/glob>
... les règles utilisées par la fonction glob() de la libc ...
</cit.>
Est-ce que tu as les moyens de faire le test avec un programme en C ?
J'ai bien un vi et un gcc, mais j'ai cessé mes essais en C...
Post by Olivier Miakinen
Post by Hugolino
$fichier = glob( $liste_fichiers_repertoire); //tableau contenant
On pourrait savoir ce que vaut $liste_fichiers_repertoire sur chacune
des deux machines ?
/var/www/zik/*mp3
Post by Olivier Miakinen
Post by Hugolino
if ( $fichier['0'] != '' ) { // Si au moins un mp3 a été trouvé
Ce test est un peu risqué, si tu te retrouves dans le cas signalé dans
la doc où glob() retourne false. Voici une suggestion faite dans les
if (is_array($fichier) && count($fichier) > 0) { // Au moins un mp3
OK, je corrigerai
Post by Olivier Miakinen
Post by Hugolino
[...]
Ceci semble innocenter le type de filesystem.
Post by Hugolino
[...]
Voilà qui semble encore confirmer mon intuition.
Post by Hugolino
[...]
<cit. http://XXXXXXXXXXX/phpinfo/>
open_basedir no value no value
</>
<cit. http://XXXXXXXXXXX:82/phpinfo/>
open_basedir
/srv/http/:/home/:/tmp/:/usr/share/pear/:/var/www/:/var/www-stats/:/var/www-logs/
/srv/http/:/home/:/tmp/:/usr/share/pear/:/var/www/:/var/www-stats/:/var/www-logs/
</>
Alléluia !!!
Post by Olivier Miakinen
Est-ce que tes fichiers sont bien sous /var/www ou un autre répertoire
accessible ?
Oui, oui... enfin ils n'étaient donc pas accessibles à php. Et
maintenant que j'ai supprimé cette directive, mes scripts qui tapaient
dans /proc sont eux-aussi retombés en marche.

Merci à toi.

PS : Puis-je te demander de superseder ton article pour éviter
l'archivage en clair de l'adresse de mon site ? (C'est fou le nombres de
routeurs qui chauffent entre la Chine et ma Freebox ;-)
--
Les hommes ont peut-être découvert le feu mais les femmes ont appris à
jouer avec...
Hugo (né il y a 1 488 925 983 secondes)
Olivier Miakinen
2011-07-01 10:03:18 UTC
Permalink
Post by Hugolino
Post by Olivier Miakinen
<cit. http://XXXXXXXXXXX/phpinfo/>
<cit. http://XXXXXXXXXXX:82/phpinfo/>
Oups ! Désolé. J'avais bien supposé que tu utilisais tinyurl pour
l'anonymat, mais j'ai oublié au moment de répondre et j'ai juste
copicollé les URL depuis le navigateur.
Post by Hugolino
PS : Puis-je te demander de superseder ton article pour éviter
l'archivage en clair de l'adresse de mon site ?
J'ai fait un cancel, c'était plus rapide avec mon clicodrome,
et surtout plus rapide que de devoir passer par l'étape de la
modération.

Cordialement,
--
Olivier Miakinen
Hugolino
2011-07-01 17:01:06 UTC
Permalink
Post by Olivier Miakinen
Post by Hugolino
PS : Puis-je te demander de superseder ton article pour éviter
l'archivage en clair de l'adresse de mon site ?
J'ai fait un cancel, c'était plus rapide avec mon clicodrome,
Merci.
Post by Olivier Miakinen
et surtout plus rapide que de devoir passer par l'étape de la
modération.
Oops !!
Je présente donc mes excuses aux modéros pour avoir doublé chacun de mes
deux précédents messages ;-))
--
Post by Olivier Miakinen
La pile réseau a été profondément modifiée pour permettre le support
des queues multiples.
Ça veut dire qu'on surfe plus vite sur les sites de gang-bang ??
Hugo (né il y a 1 488 963 363 secondes)
Continuer la lecture sur narkive:
Loading...