【发布时间】:2010-09-18 10:29:48
【问题描述】:
open_basedir 限制 PHP 在目录树中可以打开的文件。
我将几个类库和配置文件存储在我的 Web 根目录之外。这样,Web 服务器就不会让它们公开访问。但是,当我尝试从我的应用程序中包含它们时,我得到一个 open_basedir 限制错误,如下所示:
警告:realpath() [function.realpath]:open_basedir 限制生效。 文件(/var/www/vhosts/domain.tld/zend/application) 不在允许的路径内: (/var/www/vhosts/domain.tld/httpdocs:/tmp) 在 /var/www/vhosts/domain.tld/httpdocs/index.php 在第 5 行
我的网络根目录在这里:
/var/www/vhosts/domain.tld/httpdocs
我的库和配置目录在这里:
/var/www/vhosts/domain.tld/zend
放宽 open_basedir 限制以便域文件夹下的目录树可供我的应用程序使用的最佳解决方法是什么?我有许多域想要这样做,而且我显然也对创建安全漏洞持谨慎态度。
注意:我使用的是 CentOS、Apache、Plesk,并且我拥有对服务器的 root ssh 访问权限。虽然这并不直接适用于 Zend Framework,但我在本例中使用它。所以这里是 Zend 的引导程序中包含的内容:
define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../zend/application/'));
set_include_path(APPLICATION_PATH . '/../zend/library' . PATH_SEPARATOR . get_include_path());
【问题讨论】: