正如标题所说,如何在 Plesk 中为所有域添加到 open_basedir 的路径?
我必须更改所有域的 open_basedir 值:
{DOCROOT}/:/tmp/
至:
{DOCROOT}/:/tmp/:/var/www/vhosts/{DOMAIN?}/
我知道在哪里做,我只是不知道 {DOCROOT} 的父级的变量是什么
正如标题所说,如何在 Plesk 中为所有域添加到 open_basedir 的路径?
我必须更改所有域的 open_basedir 值:
{DOCROOT}/:/tmp/
至:
{DOCROOT}/:/tmp/:/var/www/vhosts/{DOMAIN?}/
我知道在哪里做,我只是不知道 {DOCROOT} 的父级的变量是什么
我在 plesk 11 使用了 Oleg 的 php.php 模板解决方案,只是更改了以下代码:
echo $OPT['settings'];
至
echo str_replace(':/tmp/', ':/tmp/:/php/includes/', $OPT['settings']);
这不是一个非常健壮的解决方案,因为可以进行比需要更多的选项替换,但这在常见情况下有效(将 /php/includes/ 目录添加到 open_basedir 选项中)。通常这些更改可以通过 plesk 服务计划更正来完成,但是当您有太多具有自定义服务计划的域时 - 更改所有域设置可能会很痛苦。
我不了解 Plesk 10.3,但在 Plesk 10.4 中有 {WEBSPACEROOT} 暴露于 /var/www/vhosts/%domain-name%/。因此,您只需在服务计划的 PHP 设置中将“{DOCROOT}/:/tmp/”替换为“{WEBSPACEROOT}/:/tmp/”即可。
这是 Plesk 11.0 中的默认设置。
对于 Plesk 10.0,当php 用作 Apache 模块时:
mkdir /usr/local/psa/admin/conf/templates/custom/service/
cp /usr/local/psa/admin/conf/templates/default/service/php.php /usr/local/psa/admin/conf/templates/custom/service/
在 /usr/local/psa/admin/conf/templates/custom/service/php.php 替换字符串
echo "php_admin_value open_basedir {$OPT['dir']}/:/tmp/\n";
至
echo "php_admin_value open_basedir " . str_replace('/httpdocs', '', $OPT['dir']) . "/:/tmp/\n";
并运行:
/usr/local/psa/admin/bin/httpdmng --reconfigure-all # to apply new configuration for all domains
但是对于 CGI 和 FastCGI 需要更改 /var/www/vhosts/domain-name/etc/php.ini 文件,我不知道如何处理它。