glob() et fichiers distants

Anakinn26
Invité n'ayant pas de compte PHPfrance

21 janv. 2008, 17:09

Bonjour à tous,

Je suis en train de migrer de EasyPHP 1.8 a WAMP
MySQL 5.0.45
Apache 2.2.6
PHP 5.2.5

Le problème est que ma fonction qui analyse les fichiers dans un repertoire situé sur un serveur, ne fonctionne plus avec WAMP mais elle fonctionnait très bien avec easyPHP...
J'ai comparé les extensions, les modules chargé etc... je ne trouve pas l'erreur.

Cependant j'ai quand même situé l'erreur, elle se trouve dans la fonction glob().
$dir = "//serveur/data1/données/*";

if(glob($dir))
	echo "OK";
else 
	exit("Marche pas !!!");
Cela bloque à ce niveau.
Ce qui me parait bizarre c'est qu'avec du easyphp ca marche alors que avec du wamp ca ne marche plus...
N'ayant pas fait d'école de programmation et n'étant pas un programmeur web ou PHP, je me tourne vers vous.

Merci,

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

21 janv. 2008, 18:11

Je ne pense pas que cela ne change grand chose, mais autant le corriger, un chemin qui contient "//" est un chemin erroné, il ne devrait au mieux y en avoir qu'un seul...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 353 Messages

21 janv. 2008, 18:11

Note: Cette fonction ne fonctionne pas avec les fichiers distants, car le fichier utilisé doit être accessible sur le système de fichiers local.
dans la description de la fonction glob ...
Donc peut etre du à une version de php différente non?
Modifié en dernier par yaug le 21 janv. 2008, 18:24, modifié 1 fois.

Mammouth du PHP | 505 Messages

21 janv. 2008, 18:22

La notation //serveur/path est une notation UNC, elle est donc correcte syntaxiquement.

D'après la foc, la notion de fichier distant ne fait pas référence à la syntaxe UNC. La restriction est d'avoir accès au FS, hors la syntaxe UNC le permet.


Hormis le changement de package, est-ce les mêmes version d'apache et de php ?
est tu sous windows ? Parfois, windows est capricieux avec la syntaxe UNC.
De plus, cela peut etre lié au droits dont dispose le service apache. Si tu lances apache (httpd.exe) à la main sans démarrer le service (ca ouvre une boite dos), as tu tjs le pb ?

anakinn26
Invité n'ayant pas de compte PHPfrance

21 janv. 2008, 18:49

Merci de votre soutien,

Pour répondre à vos questions : je suis sous Windows Xp Pro,

WAMP Server 2 (avant EasyPHP 1.8)

MySQL 5.0.45 (4.1.9)
PHP 5.2.5 (4.3.10)
Apache 2.2.6 (1.3.33)

J'ai essayé de mappé une lettre dans le poste de travail pour éviter de tapper le chemin UNC, mais ca marche toujours pas, j'ai toujours le même message d'erreur.

Le service est demarré avec les droits administrateurs de mon entreprise, le serveur http peut aller exécuter des requetes sur des serveurs auxquels je n'ai pas accès. (service exécuté en tant qu'admin mais session personelle sous windows).

Merci pour votre aide.

Mammouth du PHP | 505 Messages

22 janv. 2008, 09:59

Moi, j'ai un pb similaire et je me suis rendu compte que même si le service est lancé avec les droits d'admin, il est lancé en tant que service et donc il y a des droits relativement restreints en terme de visibilités, en tout cas, pas les droits admin. J'ai l'impression qu'un service tourne dans un compte "système".
Si tu as mappé un drive depuis ta session, il ne le verra pas car le map n'est effectif que dans ta session, pas dans une autre.

Perso, on a contourné le pb en lancant le serveur apache non plus en tant que service mais en tant que process lié a un compte. En lancant le process via eclipse, on a même plus la boite DOS ni l'entrée dans la barre de tache. Cela nous permet de gérer plus facilement nos poste de dev (on a pas accès au compte admin).
Avec cette méthode, tu ne peux pas utiliser l'icône menu wamp du systray pour arrêter ou démarrer un service. Le reste fonctionne.

Ce qui est surprenant, c'est que cela fonctionne avec easyPHP et pas avec wamp pour les mêmes versions d'apache/php. Comment était lancé apache avec earsyPHP ? As tu bien comparé les httpd.conf ? As tu vérifié les logs apaches, php et les erreurs windows dans l'event viewer ?

Anakinn26
Invité n'ayant pas de compte PHPfrance

22 janv. 2008, 10:38

Sujet résolu,

En faite il fallait que je fasse un click droit sur le httpd.exe, et que je l'execute avec les droits admininistrateur.

HTTPD.exe n'est pas lancé en tant que service Windows, mais comme un processus. Et cela fonctionne.

Reste plus qu'a trouvé l'astuce pour lancer httpd.exe comme processus avec WampServer 2.0

Un grand merci à tous.

Mammouth du PHP | 505 Messages

22 janv. 2008, 11:09

Pour lancer httpd en tant que processus, tu doit éditer wampmanager.ini, c'est là dedans que tout le menu est configuré. C'est un gestionnaire de menu externe à wamp dont tu peux trouver la doc ici :

http://www.xs4all.nl/~broekroo/aetraymenu/

Par contre, le changement d'icône indiquant si le service tourne ou pas ne fonctionnera plus.