Plesk 服务器 open_basedir 块
Posted
技术标签:
【中文标题】Plesk 服务器 open_basedir 块【英文标题】:Plesk Server open_basedir block 【发布时间】: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 文件并使用该解决方法。有什么想法吗?
【问题讨论】:
【参考方案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 之上。
【讨论】:
以上是关于Plesk 服务器 open_basedir 块的主要内容,如果未能解决你的问题,请参考以下文章
Plesk:通过 vhost_ssl.conf 覆盖 httpd.conf SSLCertificateFile?
在 Plesk 中运行 Laravel 5.1 任务计划程序
无法登录到 SMTP 服务器 Postfix/Imap Courier/Plesk