【发布时间】:2013-02-28 10:07:38
【问题描述】:
这可能有点以服务器为中心,但我希望有人能提供帮助。
我有一个 PHP CodeIgniter 应用程序,我正在尝试设置它以在服务器(或本地计算机)上设置配置文件(如 application/config/database.php),因此它们不在 github 中(所以数据库密码不被跟踪),它使一切变得更容易。
所以我让它在本地主机上完美运行,基本上它可以追溯到:
/path_before_httpdocs/config/development/config.php
但在服务器上我设置了文件夹结构,但出现此错误:
Warning: require(): open_basedir restriction in effect.
File(/var/www/vhosts/mysite.com/subdomains/staging/config/staging/config.php) is not within the allowed path(s):
(/var/www/vhosts/mysite.com/subdomains/staging/httpdocs/:/tmp/:/var/www/vhosts/mysite.com/subdomains/staging/httpsdocs/:/tmp/)
in /home/mysite/staging/deploy/releases/20130312155222/httpdocs/application/config/config.php on line 12
所以我做的第一件事就是去 php.ini 文件看看它是什么。它没有设置,所以我将它设置为 php.ini 然后重新启动 httpd。所以现在如果我运行 phpinfo() 我会看到:
Directive | Local Value | Master Value
open_basedir | /var/www/vhosts/mysite.com/subdomains/staging/httpdocs/:/tmp/:/var/www/vhosts/mysite.com/subdomains/staging/httpsdocs/:/tmp/ | /var/www/vhosts/mysite.com/subdomains/staging/config/staging/:/tmp/
我仍然得到错误。所以接下来我做的就是尝试
ini_set('open_basedir', '/var/www/vhosts/mysite.com/subdomains/staging/config/staging/:/tmp/');
这也不起作用。所以接下来我只是回应了 ini_get('open_basedir') 并返回了
/var/www/vhosts/mysite.com/subdomains/staging/httpdocs/:/tmp/:/var/www/vhosts/mysite.com/subdomains/staging/httpsdocs/:/tmp/
所以看起来它忽略了我的 php.ini
我尝试关注this article(我在 mediatemple 的 DV 4 上托管)。 Mediatemple 的支持人员说他们帮不了我。这里有人有什么想法吗?如果需要,我也可以提供更多信息。
【问题讨论】:
-
你一定在编辑
phpinfo()返回的.ini文件吗?您是否每次都重新启动您的网络服务器? -
我是因为 phpinfo 在我进行编辑时正在发生变化,是的,我每次都重新启动 httpd
-
如果没有暴露我的 phpinfo 的风险,我可以将链接发送给您,以便您查看错误
标签: php apache codeigniter mediatemple open-basedir