【问题标题】:Plesk Server open_basedir blockPlesk 服务器 open_basedir 块
【发布时间】:2012-05-08 02:32:13
【问题描述】:
我们的一个新客户托管在 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/example.com/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) 在
/var/www/vhosts/example.com/httpdocs/sub-domains/dms/index.php 上线
152 您的系统文件夹路径似乎设置不正确。
请打开以下文件并更正:index.php
我无法上传到 /conf 文件,因此我无法在其中放置 vhost.conf 文件并使用该解决方法。有什么想法吗?
【问题讨论】:
标签:
apache
codeigniter
hosting
shared-hosting
plesk
【解决方案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;
【解决方案2】:
解决方案将取决于您的客户所托管的 Plesk 版本以及他们是否拥有共享主机帐户或 VPS/专用主机(即他们拥有 Plesk 的管理员访问权限)。
如果版本是 10.4 并且他们对 Plesk 具有管理员访问权限,或者他们在其共享主机帐户中被授予 PHP 设置管理权限 -
单击站点名称并打开“PHP 设置”选项卡,然后为“open_basedir”属性输入适当的值
对于早期版本或未授予 PHP 设置管理权限的情况,您必须请求其托管服务提供商调整 vhost.conf。
或者,如果是 Plesk 10+,您可以将站点放在自定义文件夹中。因此,您在“dir1/dir2”中创建一个站点,并放置在“dir1/”文件中,该文件应位于 docroot 之上。