我们有以下设置:
- /var/www/public <-DocumentRoot
- /var/www/functions <-- php 函数
- /var/www/config <- php 配置
通过 apache vhost 配置我们打开 basedir:
php_admin_value open_basedir "/var/www/functions/:/var/www/config/"
现在,如果我在公共函数或配置下包含一个文档,它就会按预期工作。但如果我在函数内包含一个配置,则不会。
所以:
/var/www/public/index.php
可以包括../functions/test.php
但
/var/www/functions/test.php
不能包括../config/config.php
open_basedir 限制生效。文件 (../config/config.php) 不在允许的路径内:(/var/www/functions/:/var/www/config/) 在 /var/www/functions/test.php 的第 1067 行
对此有什么想法吗?
感谢并致以亲切问候
莱纳斯
附加信息:
如果我包含完整路径,它就会起作用,而include_once("/var/www/config/config.php");
不是include_once("../config/config.php");
答案1
这是你自己写的吗?在这种情况下,典型的 PHP 用法如下:
require_once(dirname(__FILE__) . "/bla/foo.php");
或者
require_once(dirname(__FILE__) . "/../config/config.php");