Comment puis-je détendre la restriction open basedir de PHP?

Open_basedir limite les fichiers qui peuvent être ouverts par PHP dans une arborescence de répertoires.

Je stocke plusieurs bibliothèques de classes et fichiers de configuration en dehors de mon répertoire racine web. De cette façon, le serveur web ne les rend pas accessibles au public. Cependant, lorsque j'essaie de les inclure à partir de mon application, j'obtiens une restriction open_basedir d'erreur comme ceci:

Avertissement: realpath() [fonction.realpath]: open_basedir restriction en vigueur. Le fichier/var/www/vhosts/domaine.tld / Zend / application) n'est pas dans le permis de chemin(s): (/var/www/vhosts/domaine.tld / httpdocs: / tmp) dans /var/www/vhosts/domaine.tld / httpdocs / index.php sur la ligne 5

Ma racine web est ici:

/var/www/vhosts/domain.tld/httpdocs

Mes bibliothèques et le répertoire de configuration sont ici:

/var/www/vhosts/domain.tld/zend

Quelle serait la meilleure solution pour assouplir la restriction open_basedir afin que l'arborescence des répertoires sous le dossier de domaine devienne disponible pour mon application? J'ai un nombre de domaines avec lesquels je veux faire cela, et je me méfie évidemment de créer des vulnérabilités de sécurité.

Remarque: J'utilise CentOS, Apache, Plesk, et j'ai un accès SSH root au serveur. Et bien que cela ne s'applique pas directement à Zend Framework, Je l'utilise dans ce cas. Voici donc l'inclusion du bootstrap de Zend:

define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../zend/application/'));
set_include_path(APPLICATION_PATH . '/../zend/library' . PATH_SEPARATOR . get_include_path());
21
demandé sur briankb 2008-10-22 02:36:27

3 réponses

Vous pouvez également le faire facilement par répertoire en utilisant le fichier de configuration Apache (en supposant qu'il s'agit de votre serveur web) (par exemple httpd.conf)

<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend"
</Directory>

Vous pouvez également supprimer complètement la restriction avec

<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir none
</Directory>
20
répondu Tom Haigh 2008-10-21 22:47:03

Ajoutez les chemins auxquels vous devez accéder (/var/www/vhosts / domain.tld/zend) à votre directive open_basedir (vous pouvez spécifier plusieurs chemins en utilisant le séparateur de chemin ':' ou ';' dans windows)

Notez que les valeurs dans open_basedir sont des préfixes, ce qui signifie que tout ce qui se trouve sous le domaine/var/www/vhosts/.tld / zend sera accessible

2
répondu user27987 2008-10-21 22:42:51

Dans le Panneau Parallels Plesk (par exemple 1and1), vous pouvez le faire dans les paramètres du panneau PHP:

entrez la description de l'image ici

Ici:

entrez la description de l'image ici

1
répondu Igor Parra 2015-03-15 04:04:48