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

问题描述:

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

我必须为所有域的open_basedir的值从:

{DOCROOT}/:/tmp/ 

到:

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

我知道做到这一点,我只是不知道变量是什么{DOCROOT}的父项

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

+0

是的 - 这是正确的,我终于在plesk论坛上得到了答案。不幸的是我在第10版。[其他帖子是“不可能”] – 2013-03-26 13:04:06

我用过的奥列格对php.php模板解决方案,在11版Plesk,只是改变了下面的代码:

echo $OPT['settings']; 

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

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

+0

Plesk 11用户请在这里找到它:http://download1.parallels.com/Plesk/PP11/11.0/Doc/en-US /online/plesk-linux-advanced-administration-guide/index.htm?fileName=69310.htm – Dichev 2014-09-12 16:21:07