当前位置: 首页 > 知识库问答 >
问题:

PHP警告:打开流失败:没有这样的文件或目录,文件路径错误

狄心水
2023-03-14

我很难理解PHP如何选择编译,或者如何在文件中包含html" target="_blank">文件。

我需要secrets.phphead.php。我需要head.php内部index.php

head.php

require "../environment/secrets.php";

index.php

require "php/head.php";

我得到一个错误:

警告:require_once(../environment/secrets.php):无法打开流:第2行调用堆栈上的/home/ubuntu/workspace/caly Dai/php/head.php中没有此类文件或目录:0.0002 234760 1。{main}()/home/ubuntu/workspace/caly-Dai/index.php:0.0007 236632。require_once('/home/ubuntu/workspace/caly-Dai/php/head.php')/home/ubuntu/workspace/caly-Dai/index.php:5致命错误:require_once():无法在/home/ubuntu/workspace/caly-Dai/php/head.php的第2行调用堆栈上打开'../environment/secrets.php'。:/usr/share/php:/usr/share/pear'):0.0002 234760 1。{main}()/home/ubuntu/workspace/caly-Dai/index.php:0.0007 236632。需要一次('/home/ubuntu/workspace/caly-Dai/php/head.php')/home/ubuntu/workspace/caly-Dai/index.php:5

我哪里做错了?

共有2个答案

倪灿
2023-03-14

PHP经常会报告它找不到第三个文件,但是为什么呢?答案在于,当在PHP中包含文件时,解释器试图在当前工作目录中找到文件。换句话说,如果在名为A的目录中运行脚本,并且包含了在目录B中找到的脚本,那么当执行在目录B中找到的脚本时,相对路径将相对于A解析。所以,如果目录中的脚本B包括位于不同目录中的另一个文件,路径仍将相对于A计算,而不是像您可能期望的那样相对于B计算。这是理解PHP和其他语言(如C/C)之间区别的非常重要的一点。

一种解决方案是使用dirname(\uuuuu文件)

使用dirname(\uuuuu FILE\uuuuu)\uuuu FILE\uuuuu常量包含所用脚本的完整路径和文件名。函数dirname()从路径中删除文件名,为我们提供文件所在目录的绝对路径,而不管该文件包含在哪个脚本中。使用它,我们可以选择使用相对路径,就像使用任何其他语言(如C/C)一样。我们将在所有相对路径前加前缀,如下所示:

include(dirname(__FILE__) . "/dir/script_name.php");

来源:http://yagudaev.com/posts/resolving-php-relative-path-problem/

秋博容
2023-03-14

据我所知,我觉得路径必须来自ubuntu的根目录。使用,
require_once(“/home/ubuntu/workspace/caly Dai/php/head.php”)尝试您的代码

 类似资料: