我在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必须出错。
有谁知道我能做些什么来解决它?
答案 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");