include(): 打开流失败:没有这个文件或目录

12

这可能是一个非常愚蠢的问题,但我真的很沮丧因为它不起作用。我有一个主页文件(home.php),其中包含<? include ("/production/fetch_order.php"); ?>。正如可以看到的那样,我正在尝试从 home.php 访问一个名为fetch_order.php的文件,该文件位于 production 文件夹中。我的路径是正确的,拼写也绝对正确。然而我最终遇到了以下错误:

Warning: include(/production/fetch_order.php) [function.include]: 
failed to open stream: No such file or directory in /path/to/home.php on line 119

Warning: include() [function.include]: Failed opening '/production/fetch_order.php'
for inclusion (include_path='.:/path/to/php/php5.3.6/lib/php') in
/path/to/home.php on line 119

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

14

您在行首使用了绝对路径(/),需要去掉该斜杠使其成为相对路径,例如:

production/fetch_order.php

在添加斜杠时,它会从您系统的根目录开始搜索,如果没有斜杠,则会在当前目录中查找。


文件实际上存在还是你需要输入正确的文件路径?在home.php所在的目录中是否有一个名为“production”的文件夹? - MacMac
文件存在。home.php和production文件夹在同一级别,production文件夹中有一个名为fetch_order.php的文件。 - Namit
现在有一个针对这个常见错误的故障排除清单,网址为: stackoverflow.com/a/36577021/2873507 - Vic Seedoubleyew
是的,PHP7会在尾随斜杠方面发出警告,而其他版本的PHP则不会。感谢您的答案。 - Thanasis

6

请确保您引用的路径(“/production/fetch_order.php”)提供了从文件系统根目录的绝对路径或从当前文件(home.php)的相对路径。

请注意,路径必须提供其中之一。

include('production/fetch_order.php');

或者

include(dirname(__FILE__) . '/production/fetch_order.php');

好的。那个路径中有一个名为“production”的目录,其中包含一个名为“fetch_order.php”的文件? - rjz
此外,您看到了什么错误?如果没有任何错误显示,那么有可能是文件被包含但您的脚本没有执行任何操作吗? - rjz
该文件确实存在。错误是警告,如上面的代码所示。 - Namit
PHP在Web服务器上是以您还是以用户身份执行的?如果是服务器执行,它是否具有权限? - rjz
现在有一个针对这个常见错误的故障排除清单,网址为: stackoverflow.com/a/36577021/2873507 - Vic Seedoubleyew
显示剩余4条评论

1

似乎路径不正确,请尝试:

<? include ("production/fetch_order.php"); ?>

1
尝试使用 var_dump(dirname(FILE)) 或 var_dump(realpath(dirname(FILE))) 进行调试。 - dotoree
有点像,不是吗? - rjz
抱歉,我不明白那个。 - Namit
如果调用者的PHP文件给出了“/right/path/to/file/production/fetch_order.php”,那么似乎它就是fetch_order.php!它会调用自己吗? - dotoree
现在有一个针对这个常见错误的故障排除清单,网址为: stackoverflow.com/a/36577021/2873507 - Vic Seedoubleyew

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