2014-09-24 40 views
0

这里是文件路径与包括声明:包括(“/ header.php文件”)返回“未能打开流”错误

http://localhost/plugins/index.php 

而这里的文件路径我包括:

http://localhost/header.php

所以,当我打电话include('/header.php')我得到未能打开流警告消息。但是,当我使用include('../header.php')一切工作正常。但是,我的文件包含很深的目录,而且我不想一次指定一个目录的相对路径。我相信除了使用'/'之外,必须有一种方法来缩短包含参数;如果有的话,那可能是什么?

+0

网络路径和文件路径可能没有任何关系 – 2014-09-24 03:03:48

回答

1
$_SERVER['DOCUMENT_ROOT'] can be used more ideally like so: 

include $_SERVER['DOCUMENT_ROOT'] . '/header.php'; 

这比使用像include '/usr/local/apache2/htdocs...其他绝对URL其配合你的站点的代码到你的Web服务器配置较为理想。

1

include('/header.php')看在你的根文件夹(在Unix上,通常在Windows c:\字面上/;这是一个绝对的包括一个相对

处理嵌套最好的办法是使用绝对具备。使用web根目录下的文件夹名称(我不知道你的平台或设置)如果你不知道你可能会从header.php执行echo dirname(__FILE__)来找出它;通常在Linux或Windows上的/var/www/可能是一些疯狂的东西C:/Program Files/Apache Software Foundation/Apache2.4/htdocs

一旦你知道绝对包括像include('/var/www/header.php')会工作,不管你的文件是如何嵌套的。

希望有所帮助。

+0

很不错的解释,我想。我错了,因为我认为包含('/ header.php')在web根目录(C:/Apache2.4/htdocs/)中查找。 – 2014-09-24 04:03:35

1

如果您在脚本上使用include(),则将包含该文件。unix上的路径名以/ 开头,在windows中为冒号。

另请参阅函数realpath(),它返回绝对路径名。

或者你也可以使用像

include $_SERVER['DOCUMENT_ROOT'] . "/includefolder/thefile.php"; 
相关问题