phep
2007-06-09 07:36:36 UTC
Bonjour,
Juste par curiosité...
Ma machine de dev (debian testing) est en php 5.2.0 depuis fin décembre
et jusqu'à pas si longtemps (a priori fin mars), le code suivant
(l'exemple est simplifié à dessein, bien sûr) :
$path = "/home/pillot/public_html/realpath.php/../../";
echo "<p>path = $path</p>";
echo "<p>rpath = " . realpath($path) . "</p>";
donnait le résultat suivant :
path = /home/toto/public_html/realpath.php/../../
rpath = /home/toto
On peut discuter du bien-fondé de la chose (l'écriture
"...fichier/../.."), mais ça marchait : j'en suis sûr, c'est dans des
routines couvertes par des tests unitaires qui ont tourné tous les jours
de décembre à mars ;-)
Me remettant à travailler sur cette librairie, je viens de découvrir que
ce code me donne maintenant celà :
path = /home/pillot/public_html/realpath.php/../../
rpath =
c'est-à-dire que t'chi alors que je suis toujours en 5.2.0, mais avec
qques màj de sécurité des paquets debian.
Comme j'ai sur ma machine un PHP 4.4.4, j'ai fait l'essai et ça donne
toujours rien. J'ai donc d'abord pensé que ça ne venait pas forcément de
php (sinon ça marcherait dans 4.4) mais d'une librairie système de plus
bas niveau (libc, probablement), et effectivement, si je tape :
% ls /home/pillot/public_html/realpath.php/../../
j'ai une erreur "Not a directory"
J'allais abandonné en pensant que le jeu ne valait pas la chandelle mais
j'ai eu qd même l'envie de voir ce que celà donnait sur un serveur de
prod encore en sarge et en php 4.3.10 :
eh bien le 'ls' donne toujours "Not a directory", mais ce coup-ci
realpath ne renacle plus et renvoie bien "/home/toto".
Quelqu'un a-t-il remarqué ça et/ou aurait une idée sur l'origine du
problème ?
Conclusion : je m'en vais écrire un petit script de plus dans
cron.daily... ;-)
Cordialement,
phep
Juste par curiosité...
Ma machine de dev (debian testing) est en php 5.2.0 depuis fin décembre
et jusqu'à pas si longtemps (a priori fin mars), le code suivant
(l'exemple est simplifié à dessein, bien sûr) :
$path = "/home/pillot/public_html/realpath.php/../../";
echo "<p>path = $path</p>";
echo "<p>rpath = " . realpath($path) . "</p>";
donnait le résultat suivant :
path = /home/toto/public_html/realpath.php/../../
rpath = /home/toto
On peut discuter du bien-fondé de la chose (l'écriture
"...fichier/../.."), mais ça marchait : j'en suis sûr, c'est dans des
routines couvertes par des tests unitaires qui ont tourné tous les jours
de décembre à mars ;-)
Me remettant à travailler sur cette librairie, je viens de découvrir que
ce code me donne maintenant celà :
path = /home/pillot/public_html/realpath.php/../../
rpath =
c'est-à-dire que t'chi alors que je suis toujours en 5.2.0, mais avec
qques màj de sécurité des paquets debian.
Comme j'ai sur ma machine un PHP 4.4.4, j'ai fait l'essai et ça donne
toujours rien. J'ai donc d'abord pensé que ça ne venait pas forcément de
php (sinon ça marcherait dans 4.4) mais d'une librairie système de plus
bas niveau (libc, probablement), et effectivement, si je tape :
% ls /home/pillot/public_html/realpath.php/../../
j'ai une erreur "Not a directory"
J'allais abandonné en pensant que le jeu ne valait pas la chandelle mais
j'ai eu qd même l'envie de voir ce que celà donnait sur un serveur de
prod encore en sarge et en php 4.3.10 :
eh bien le 'ls' donne toujours "Not a directory", mais ce coup-ci
realpath ne renacle plus et renvoie bien "/home/toto".
Quelqu'un a-t-il remarqué ça et/ou aurait une idée sur l'origine du
problème ?
Conclusion : je m'en vais écrire un petit script de plus dans
cron.daily... ;-)
Cordialement,
phep