如何在Plesk中为所有域添加open_basedir的路径?

时间:2013-03-25 18:26:46

标签: plesk

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

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

{DOCROOT}/:/tmp/

为:

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

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

2 个答案:

答案 0 :(得分: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文件,我不知道如何处理它。

答案 1 :(得分:2)

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

echo $OPT['settings'];

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

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