Problème avec le include_path du php.ini

juanYves Messages postés 2 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 24 juillet 2009 - 23 juil. 2009 à 19:42
juanYves Messages postés 2 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 24 juillet 2009 - 24 juil. 2009 à 18:43
Sur un serveur dédié avec Plesk 9.2.1
Installé: eAccelerator
J'ai configuré le include_path du php.ini sur le répertoire /home/lib dans lequel j'ai un fichier test1.php
include_path = ".:/usr/share/psa-pear:/home/lib"
Le safe_mode est off: safe_mode=Off

Le phpInfo() me donne les données correctes:
include_path .:/usr/share/psa-pear:/home/lib
safe_mode Off

Avec:
echo('Include path is: ' . ini_get('include_path') . '
');
ini_set("include_path", ".:/home/lib");
echo('Include path is: ' . ini_get('include_path') . '
');

J'ai correctement:
Include path is: .:/usr/share/psa-pear:/home/lib
Include path is: .:/home/lib

Mon problème est que si je veux inclure le fichier test1.php qui est dans le répertoire /home/lib avec le chmod 755, j'ai invariablement:
Warning: include(test1.php) [function.include]: failed to open stream: Aucun fichier ou répertoire de ce type in /var/www/vhosts/mptodos.org/httpdocs/test.php on line 5

Warning: include(test1.php) [function.include]: failed to open stream: Aucun fichier ou répertoire de ce type in /var/www/vhosts/mptodos.org/httpdocs/test.php on line 5

Warning: include() [function.include]: Failed opening 'test1.php' for inclusion (include_path='.:/home/lib') in /var/www/vhosts/mptodos.org/httpdocs/test.php on line 5

Le code d'inclusion est:
include "test1.php";

Le problème est le même sur tous les domaines hébergés sur le serveur. Sur un autre serveur avec une configuration similaire je n'ai pas ce problème.
Il n'y a aucuns problèmes pour ce qui est des includes à l'intérieur des domaines (répertoire courant).

Évidemment, impossibilité d'inclure des classes pear.

Quelqu'un aurait-il une idée sur ce qui peut bloquer.
La seule chose qui est installé sur le serveur c'est eAccelerator qui fonctionne correctement.

2 réponses

cs_thierry la fronde Messages postés 351 Date d'inscription mercredi 21 juillet 2004 Statut Membre Dernière intervention 12 août 2009
24 juil. 2009 à 12:32
Bonjour,

Si c'est un hébergeur mutualisé le safe-mode est certainement actif malgré l'info du php..
J'ai rencontré le même problème, impossible d'ouvrir un fichier ni de lancer des commandes shell genre openssl. Les fichiers avec autorisation de traitement doivent être dans le dossier includes.. Mais je n'ai pas trouvé comment l'y mettre.

voir aussi les variables allow_url_fopen et allow_url_include ...?

thierry la fronde
0
juanYves Messages postés 2 Date d'inscription jeudi 23 juillet 2009 Statut Membre Dernière intervention 24 juillet 2009
24 juil. 2009 à 18:43
Ce n'est pas un serveur mutualisé mais, comme dit dans le message un serveur dédié.
Je crois bien que les variables allow_url_fopen et allow_url_include s'applique aux includes externes au domaines et je ne crois pas que ce soit un bon plan au niveau sécurité.
Néanmoins je vous remercie pour la participation.
Je crois que j'ai trouvé le problème:

Plesk dans son immense bonté positionne pour chaque domaine la variable open_basedir

php_admin_value open_basedir "/var/www/vhosts/@domaine@/httpdocs:/tmp"

Solution:

Créer un fichier vhost.conf: /var/www/vhosts/@domaine/conf/vhost.conf s'il n'existe pas et inclure:
<Directory /var/www/vhosts/@domaine@/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/@domaine@/httpdocs:/tmp:/répertoire/où/se/trouvent/les/fichiers"
</Directory>

Exécuter
# /usr/local/psa/admin/sbin/websrvmng -v -a
pour que plesk reconfigure les domaines et redémarre Apache
0
Rejoignez-nous