2009-09-02 6 views
0

Voici mon code actuel (que je suis très fier de ma première tentative de php)php ne scanne pas le chemin relatif pour les fichiers

<?php 
$files = glob("/jobops/*.txt"); 
$indexcount = count($files); 
sort($files); 
print("<br>"+$indexcount+"<br>"); 
foreach ($files as &$file) 
{ 
    print("<a href=\"$file\">$file</a><br>"); 
} 
?> 

le problème est glob fonctionne à nouveau bien dans le répertoire racine (où ce script est situé) mais quand je le pointe vers un dossier spécifique, il renvoie 0 fichiers trouvés.

J'ai inclus une capture d'écran de mon client ftp montrant la structure du répertoire (ci-dessous)

donc je suis confus ce que je fais mal sur le glob

www.markonsolutions.com/test.php est où le script est et si vous cliquez dessus retourne 0 fichiers trouvés

alt text http://i30.tinypic.com/106alba.jpg

Répondre

6
"/jobops/*.txt" 

est un chemin absolu sur * nix, si vous voulez pointer vers le répertoire qui se trouve dans le même répertoire en tant que script php vous devez utiliser:

"jobops/*.txt" 

qui est un chemin relatif.

+1

Ou vous pouvez utiliser « ./jobops/*.txt » – Yacoby

+0

En plus de cela, assurez-vous que l'utilisateur dans lequel php s'exécute sous a accès à ce dossier – Scott

+0

alors que je ne sais pas sur le système OP réel, sur erreur 'glob' sur la majorité des systèmes d'exploitation va retourner' false'. – SilentGhost

2

peut-être quelque chose comme:

$files = glob($_SERVER['DOCUMENT_ROOT']."/jobops/*.txt"); 
+0

des documents glob: * Le modèle. Aucune extension de tilde ou substitution de paramètre n'est effectuée. * – SilentGhost

+1

Négatif Ghost rider ~ ne fonctionne pas – Crash893

+0

a modifié la réponse –

1

Si vous utilisez ce à partir d'un serveur web? Se pourrait-il que les paramètres Utilisateur et Groupe du serveur Web ne permettent pas l'accès à d'autres répertoires? Est-ce un problème d'autorisations? Vérifiez les journaux error_log et access_logs du serveur Web pour trouver des indices.

3

Comme dit

"/jobops/*.txt"

est un chemin absolu car il commence par un "/" (barre oblique)

chemins relatifs sont ceux qui ne commencent pas par une barre oblique, donc

"jobops/*. txt"

"./jobops/*.txt"

"../jobops/*.txt"

sont tous relatifs ... le point est: par rapport à quoi?

sur le logiciel libre est par rapport aux répertoires énumérés dans la variable d'environnement PATH (et souvent le répertoire de travail en cours est le premier de la liste dans cette variable, Leding à la supposition erronée que « jobops/*. Txt » est référé au répertoire jabops dans le répertoire courant!)

En PHP, c'est votre environnement, il vaut mieux toujours utiliser les chemins absolus, ce qui n'implique pas de les coder en dur bien sur.

Je suggère de faire ce qui suit:

dirname(__FILE__).'/jobops/*.txt' 

qui est comment utiliser des chemins en PHP, correctement

Questions connexes