php Open_Basedir 配置 Apache 2

php Open_Basedir 配置 Apache 2

我们有以下设置:

  • /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");

相关内容