1

正如标题所说,如何在 Plesk 中为所有域添加到 open_basedir 的路径?

我必须更改所有域的 open_basedir 值:

{DOCROOT}/:/tmp/

至:

{DOCROOT}/:/tmp/:/var/www/vhosts/{DOMAIN?}/

我知道在哪里做,我只是不知道 {DOCROOT} 的父级的变量是什么

4

2 回答 2

3

我在 plesk 11 使用了 Oleg 的 php.php 模板解决方案,只是更改了以下代码:

echo $OPT['settings'];

echo str_replace(':/tmp/', ':/tmp/:/php/includes/', $OPT['settings']);

这不是一个非常健壮的解决方案,因为可以进行比需要更多的选项替换,但这在常见情况下有效(将 /php/includes/ 目录添加到 open_basedir 选项中)。通常这些更改可以通过 plesk 服务计划更正来完成,但是当您有太多具有自定义服务计划的域时 - 更改所有域设置可能会很痛苦。

于 2013-04-18T11:31:36.487 回答
3

我不了解 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 文件,我不知道如何处理它。

于 2013-03-26T07:47:50.600 回答