2

我有一个 PHP 库,我想与服务器上的多个虚拟主机共享,但 open_basedir 指令会造成麻烦。

我使用 ISPConfig 3 来管理站点。

PHP 警告:include():open_basedir 限制生效。文件(/var/toaster/latest/__server/core/cms.php)不在第5 行[cut]中的允许路径内:( [cut:several paths]

phpinfo() 说:

加载的配置文件:/etc/php5/cgi/php.ini
open_basedir[cut:several paths](本地和主值)

/etc/php5/cgi/php.ini 说:

;open_basedir =

/usr/local/ispconfig/server/conf/vhost.conf.master 说:

<tmpl_if name='security_level' op='==' value='20'>
php_admin_value open_basedir <tmpl_var name='php_open_basedir'>
</tmpl_if>

但是 /etc/apache2/sites-enabled/[cut: domain].vhost 说:

完全没有关于 open_basedir


所有这一切都意味着我不知道的东西设置了我的 open_basedir 指令。什么哪里?

4

2 回答 2

6

比预期的要容易和明显得多。
在 ISPConfig 的“Web 域”的“选项”面板中,有一个标记为 的文本框PHP open_basedir。我仍然不知道要创建或编辑哪个确切的配置文件,但它可以工作。

此文本框还值得一提 - 创建新站点时的默认值可以更改为:

系统 >> 服务器配置 >> Web >> PHP 设置 >> PHP open_basedir

于 2012-01-26T14:28:57.583 回答
3

非常感谢您的回答!我到处找,答案就在选项屏幕上!谢谢你,谢谢你,谢谢你!

经过进一步调查,ISPConfig 在虚拟主机启动时执行 php-cgi。启动器脚本位于 /var/www/php-fcgi-scripts/web?/.php-fcgi-starter,其中 ? 表示客户端内的站点编号。open_basedir 作为参数传递给启动。这就是为什么在单个 php.ini 中覆盖不起作用的原因。至少,当站点是 fast-cgi / su-exec 时,它是这样配置的。

于 2012-06-15T23:12:07.230 回答