PHP include - 打开流失败:没有这个文件

6
我用HTML编写了一个网站,但是我想把头部和导航栏放在一个文件中,这样只需更改一次。于是我将所有页面的扩展名更改为.php并添加了php包含文件。然而现在,对于我已经放进文件夹中以创建无需冗余链接的页面,我遇到了错误。
头部文件:/test/assets/header.php 正常工作:/test/index.php 包含 <?php include 'assets/header.php'; ?> 出错:/test/company/index.php 包含 <?php include '/test/assets/header.php'; ?> 错误信息:
Warning: include(/test/assets/header.php) [function.include]: failed to open stream: No such file or directory

Warning: include() [function.include]: Failed opening '/test/assets/header.php' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/php5/lib/pear')

我遇到了一个问题,无法链接到根目录下文件夹中的头文件。我认为这只是一个简单的问题,只是不知道如何输入URL。如果我尝试包含header.php的完整路径,就会出现“URL文件访问已禁用”的错误。


经常会遇到这个错误,为了快速排除故障,请按照以下步骤操作:https://dev59.com/LVoV5IYBdhLWcg3wL8Ww#36577021 - Vic Seedoubleyew
可能是重复的问题:无法打开流:没有这个文件或目录 - Vic Seedoubleyew
3个回答

16

如果您以/开头的路径,那么它就是绝对路径。 绝对路径指的是实际文件系统根目录,而不是虚拟文档根目录,这就是为什么它失败的原因。

通常这意味着:

include "$_SERVER[DOCUMENT_ROOT]/test/assets/header.php";
// Note: array key quotes only absent in double quotes context

现在有一个针对这个常见错误的故障排除清单,链接在这里:https://dev59.com/LVoV5IYBdhLWcg3wL8Ww#36577021 - Vic Seedoubleyew

5

我也遇到了同样的警告:

Warning: include(/test/assets/header.php) [function.include]: failed to open stream: No such file or directory
Warning: include() [function.include]: Failed opening '/test/assets/header.php' for inclusion (include_path='.:/usr/local/lib/php:/usr/local/php5/lib/pear')

我用以下方法解决了它们:
你需要定义你的路径,然后使用include函数,如下所示:
define('DOC_ROOT_PATH', $_SERVER['DOCUMENT_ROOT'].'/');
require DOC_ROOT_PATH . "../includes/pagedresults.php";

之后,您可以使用任何目录结构。


<b>注意</b>:使用未定义的常量DOC_ROOT_PATH - 假定为'DOC_ROOT_PATH'。请使用DOC_ROOT_PATH代替'DOC_ROOT_PATH' - Elshan
此频繁错误现在有一个故障排除清单,点击以下链接查看:https://dev59.com/LVoV5IYBdhLWcg3wL8Ww#36577021 - Vic Seedoubleyew

0

它不是一个URL,而是一个文件路径(尽管当服务器配置允许时,您可以使用完整的URL)。


现在有一个针对这个常见错误的故障排除清单,链接在这里:https://dev59.com/LVoV5IYBdhLWcg3wL8Ww#36577021 - Vic Seedoubleyew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接