Plesk Server open_basedir块

时间:2012-04-27 10:29:34

标签: apache codeigniter hosting shared-hosting plesk

我们的一个新客户端托管在Parallel Plesk系统上,我需要将Codeigniter安装到我的项目的子域中。为此,我需要将文件放在Web根目录上方的目录中,但唯一的问题是Plesk阻止访问除/ private,/ httpdocs&之外的所有基目录中的脚本。 / httpsdocs的。我上传了我的应用程序&系统文件到/ private,但不断收到以下错误:

  

警告:realpath()[function.realpath]:open_basedir限制生效。文件(/var/www/vhosts/example.com/private/system)不在/ var / www /中的允许路径中:(/ var / www / vhosts / examples / httpdocs:/ tmp)第143行的vhosts / example.com / httpdocs / sub-domains / dms / index.php

     

警告:is_dir()[function.is-dir]:open_basedir限制   影响。文件(/var/www/vhosts/example.com/private/system/)不是   在允许的路径内:   (/var/www/vhosts/example.com/httpdocs:/tmp)in   /var/www/vhosts/example.com/httpdocs/sub-domains/dms/index.php在线   152您的系统文件夹路径似乎未正确设置。   请打开以下文件并更正:index.php

我无法上传到/ conf文件,因此我无法在其中放置vhost.conf文件并使用该方法。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我有您想要的解决方案。您应该更改您的配置文件。 (application>config>config.php)

检查您的配置文件,然后在“会话变量”下更改sess_save_path的值。

之前:

config['sess_driver'] = 'files'; 
config['sess_cookie_name'] ='ci_session'; 
config['sess_expiration'] = 7200;
config['sess_save_path'] = NULL;
config['sess_match_ip'] = FALSE; 
config['sess_time_to_update'] = 300; 
config['sess_regenerate_destroy'] = FALSE;

之后:

config['sess_driver'] = 'files'; 
config['sess_cookie_name'] ='ci_session'; 
config['sess_expiration'] = 7200; 
config['sess_save_path'] = '/tmp';
config['sess_match_ip'] = FALSE; 
config['sess_time_to_update'] = 300; 
config['sess_regenerate_destroy'] = FALSE;

答案 1 :(得分:0)

解决方案将取决于您的客户托管的Plesk版本以及他们是否拥有共享托管帐户或VPS /专用托管(即他们拥有Plesk的管理员权限)。

如果版本为10.4且他们拥有Plesk的管理员权限,或者他们在共享主机帐户中获得了PHP设置管理权限 - 单击站点名称并打开“PHP设置”选项卡,然后为“open_basedir”属性

添加适当的值

对于早期版本或未授予PHP设置管理权限的情况,您必须请求其托管服务提供商调整vhost.conf。

或者,如果是Plesk 10+,您可以将网站放在自定义文件夹中。所以你在“dir1 / dir2”中建立一个网站并放在“dir1 /”文件中,这些文件应该高于docroot。