2010-01-11 14 views
1

J'ai PHP installé sur un serveur web administré par Plesk. J'ai quelques problèmes de include_path de PHP que j'ai rétrécis aux chemins absolus apparemment ne fonctionnant pas.PHP sur Plesk - Impossible de voir les répertoires absolus

Donc, si je tente de faire une liste de répertoires, les travaux suivants:

echo "<h3>Directory listing of .</h3>"; 
foreach (new DirectoryIterator('.') as $fileInfo) { 
    if($fileInfo->isDot()) continue; 
    echo $fileInfo->getFilename() . "<br>\n"; 
}; 

Mais cela ne donne aucune sortie. (Il y a des fichiers là-bas).

echo "<h3>Directory listing of /var/www</h3>"; 
foreach (new DirectoryIterator('/var/www') as $fileInfo) { 
    if($fileInfo->isDot()) continue; 
    echo $fileInfo->getFilename() . "<br>\n"; 
}; 

Sortie:

Directory listing of . 
.htaccess 
index.php 
try.php 

Directory listing of /var/www 

Toutes les idées?

Répondre

2

S'il s'agit d'une configuration de serveur multisite, cela peut être un comportement normal. Plesk (ou une autre partie de votre système) limiterait votre instance PHP à votre site actuel, et ne permettrait pas un coup d'oeil dans le répertoire général var/www.

De quel utilisateur est votre PHP en cours d'exécution? Cet utilisateur a-t-il le droit d'accéder à/var/www?

+0

Merci. Je viens de vérifier l'utilisateur php et a effectué quelques tests.Uid = 48 (apache) gid = 48 (apache) groupes = 48 (apache), 2521 (psaserv) PHP peut faire un ls de la racine du document/var/www/vhosts//httpdocs mais pas/var/www/vhosts//Zend :( De la ligne de commande: drwxr-x --- 12 reportingadmin psaserv 4096 11 janvier 12:54 httpdocs drwx ------ 5 reportingadmin root 100 Dec 16 15: 39 privé drwxr-xr-x 11 reportingadmin psaserv 4096 Nov 23 19:54 Zend (Le formatage des commentaires ennuyeux échoue!) – Dizzley

1

Plesk ajoutera une variable comme celui-ci dans le httpd.conf comprennent:

php_admin_value open_basedir /var/www/vhosts/_web_domain_/httpdocs/:/tmp/ 

vous ne pouvez donc pas la liste un dossier parent de votre serrure httpdocs et /tmp. Vous pouvez ajouter manuellement dans votre fichier de configuration en utilisant un compte root ssh.

Modifiez le fichier de configuration httpd à partir de votre site dans: /var/www/vhosts/_your_domain_/config/. _httpd.include (le Plesk 10 est un nom dynamique qui change avec un horodatage).

Là, vous pouvez rechercher php_admin_value open_basedir et ajouter le dossier que vous souhaitez avoir accès en utilisant: séparateur. Comme:

php_admin_value open_basedir /var/www/vhosts/_web_domain_/httpdocs/:/tmp/:/var/www 

Mais si vous voulez ajouter un accès au dossier pour tous vos sites, comme /usr/share/pear dossier, vous devez modifier les fichiers du panneau de plesk.

Modifier /usr/local/psa/admin/conf/templates/default/service/php.php, changement de:

echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/\n"; 

Pour:

echo "php_admin_value open_basedir {$OPT['dir']}/:/usr/share/pear/:/tmp/\n"; 

Remamber qui sera donner accès à tous les sites Web dans le dossier, peut casser la sécurité du serveur. Faites à vos risques et périls. Et rappelez-vous que si Plesk est mis à jour, il effacera vos modifications.