正如标题所说,如何在Plesk中为所有域添加open_basedir的路径?
我必须更改所有域的open_basedir值:
{DOCROOT}/:/tmp/
为:
{DOCROOT}/:/tmp/:/var/www/vhosts/{DOMAIN?}/
我知道在哪里做,我只是不知道{DOCROOT}的父母的变量是什么
答案 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服务计划更正来完成的,但是当您有太多域的自定义服务计划时 - 可能会更改所有域设置的痛苦。