DirectoryIterator, problème Unix

ViPHP
xTG
ViPHP | 7331 Messages

08 mars 2011, 21:46

Bonsoir à toutes et à tous,

j'ai un soucis avec l'utilisation de DirectoryIterator.
Je l'utilise pour récupérer certains fichiers avec un masque (classe qui hérite de FilterIterator en fait si on situe mieux.

Mon soucis est que je dois pointer tout le temps sur le bon répertoire quelque soit l'endroit où est appelé le script.
Je situe donc à partir du root.

Sous windows (mon serveur maison) : C://wamp/www/dossier/ => aucun soucis
Sous mon serveur web (Unix) : /public_html/dossier/ => il recherche le dossier public_html à partir du dossier où est exécuté le script...
J'ai vu des personnes utilisant le chemin /home sans aucun soucis avec ce genre de fonction, donc je m’interroge.

Auriez-vous une idée ?

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

08 mars 2011, 21:50

yop,

/public_html/dossier/ la tu demande le dossier public_html a la racine du systeme de fichier, t'aurais pas oublié un point avant le 1er / ?


@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

08 mars 2011, 23:14

Le point ne représente pas le dossier courant ?
J’essaierai demain soir. :)

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

09 mars 2011, 00:26

ben wé le dossier courant le point, maisbon j'ai p'tet pas pigé la situation exact.

ta vers "unix" c'est une machine de test ou un truc en prod ?

ma réaction est du fait que le docroot n'est rarement à la racine du système :)

@+
Il en faut peu pour être heureux ......

ViPHP
xTG
ViPHP | 7331 Messages

09 mars 2011, 09:08

je te donnes un exemple d'utilisation, ça ira sans doute mieux que mes explications à deux sous :
(je me base sur mon architecture WAMP)

j'ai un fichier : \www\projet\config.ink.php (appelé majoritairement à partir de index.php dans le même dossier)
que je dois inclure quoi que je fasse, il a à l'intérieur des include() supplémentaires, mais qui bug si j'appelle ce fichier depuis un autre fichier que inde.

Par exemple :
\www\projet\dossier\traitementAjax\fichier.ajax.php
Là je fais un require_once("../../config.ink.php");
Mais les include() à l'intérieur du config.ink.php inclue à partir du dossier traitementAjax ce qui me pose bien évidement problème !
Donc j'ai mis une variable de configuration du chemin root de mon site dans ce fichier.
=> C:\\wamp\www\projet\
=> /public_html/projet/
Cela fonctionne bien sous windows, il prend bien le chemin à partir de la racine du disque dur.
Mais sous unix avec mon exemple décrit il recherche à inclure : /public_html/projet/dossier/traitementAjax/public_html/projet/

ViPHP
xTG
ViPHP | 7331 Messages

09 mars 2011, 19:00

Je reviens à la charge après un test.

./public_html/projet/ me fait pointer sur /public_html/projet/public_html/projet/
Donc le point désigne bel et bien le dossier courant et non la racine du serveur.

Une autre solution ? :o

ViPHP
ViPHP | 5462 Messages

09 mars 2011, 19:02

quand tu fais un realpath ca donne quoi ?

ViPHP
xTG
ViPHP | 7331 Messages

09 mars 2011, 22:28

Bien vu l'aveugle...
En effet j'aurai du me douter que le chemin commençait pas à public_html...

Donc pour correction cela donne : /home/nom/public_html/projet/
Et pas de point, sinon ça marche pô. :non:

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

10 mars 2011, 00:11

J'avais donc raison ton repertoire est pas a la racine du system XD
Il en faut peu pour être heureux ......