PHP包含不起作用

时间:2012-06-07 15:53:50

标签: php debian

我在http://www.example.com/的{​​{1}}上有文档在Debian Squeeze上运行。

/home/www/example.com/www

在php.ini中我已取消注释并更改为:

/home/www/example.com/
    www/
         index.php
    php/
         include_me.php

在www中的脚本index.php中,我有include_path =".:/home/www/example.com" 。我从PHP获得的输出是:

require_once("/php/include_me.php")

如您所见,根据错误正确设置了包含路径。但如果我做Warning: require_once(/php/include_me.php) [function.require-once]: failed to open stream: No such file or directory in /home/www/example.com/www/index.php on line 2 Fatal error: require_once() [function.require]: Failed opening required '/php/include_me.php' (include_path='.:/home/www/example.com') in /home/www/example.com/www/index.php on line 2 ,它就有效。因此,include-path必须出错。

有谁知道我能做些什么来解决它?

6 个答案:

答案 0 :(得分:7)

php/

是一个相对路径,使用当前目录作为起点

./php/

是一个相对路径,并明确声明当前目录()作为起点

/php/

相对路径,这意味着它的起点是顶级目录(根目录 /

答案 1 :(得分:2)

来自include的文档:

  

如果定义了一个路径 - 无论是绝对路径(从Windows上的驱动器号或者\或Unix / Linux系统上的/开始)还是相对于当前目录(以。或..开头) - include_path将被忽略共。例如,如果文件名以../开头,则解析器将查找父目录以查找所请求的文件。

由于您在这种情况下指定了绝对路径,因此忽略include_path

答案 2 :(得分:2)

我同意Mihai Stancu的观点,但我想补充一点,使用dirname(__ FILE__)可能是更好的做法,这样当目录在代码中移动时不会破坏。这将像绝对路径一样,但允许您将它们视为本地路径。

答案 3 :(得分:2)

require_once(“/ php / include_me.php”)的说明:

您为'/home/www/example.com/'设置了包含路径,但这是/ home / www的子目录。您的require_once正在寻找/php/include_me.php。

/
home/
    www/
        example.com/
              php/
              www/
php/
    include_me.php

您的需求调用中有一个前置/,正在寻找/php/include_me.php。要查找/home/www/example.com/php/include_me.php,您需要:

require_once('php/include_me.php');

您还可以将包含路径设置为:

include_path =".:/home/www/example.com/:/home/www/example.com/www/:/home/www/example.com/php/"

答案 4 :(得分:1)

你需要的一开始斜线将从根搜索...尝试:

require_once('php/include_me.php');

答案 5 :(得分:1)

这是试图在文件系统上的/ php上抓取文件,而不是你的web目录。

require_once("/php/include_me.php");