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

我无法理解PHP如何选择编译或者如何在文件中包含文件。

这是我的文件结构: 在这里输入图像描述

我需要secrets.phphead.php 。 我需要index.php里面的head.php

head.php

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

的index.php

require "php/head.php";

我收到一个错误:

警告:require_once(../ environment / secrets.php):未能打开流:第2行的/ home / ubuntu / workspace / Cally Dai / php / head.php中没有这样的文件或目录调用堆栈:0.0002 234760 1。 {main}()/ home / ubuntu / workspace / Cally Dai / index.php:0 0.0007 236632 2. require_once('/ home / ubuntu / workspace / Cally Dai / php / head.php')/ home / ubuntu / workspace / Cally Dai / index.php:5致命错误:require_once():打开所需的'../environment/secrets.php'失败(include_path ='。:/ usr / share / php:/ usr / share / pear')在/ home / ubuntu / workspace / Cally Dai / php / head.php在线2调用堆栈:0.0002 234760 1. {main}()/ home / ubuntu / workspace / Cally Dai / index.php:0 0.0007 236632 2。 require_once('/ home / ubuntu / workspace / Cally Dai / php / head.php')/ home / ubuntu / workspace / Cally Dai / index.php:5

我哪里错了?


根据我的说法,我觉得这个路径必须来自Ubuntu的根目录。 试试你的代码,
require_once(“/ home / ubuntu / workspace / Cally Dai / php / head.php”)


当一个PHP文件包含另一个PHP文件时,它本身也包含另一个文件 - 所有文件都在单独的目录中 - 使用相对路径来包含它们可能会引发问题。

PHP会经常报告它无法找到第三个文件,但是为什么? 那么答案就在于,当在PHP中包含文件时,解释器会尝试在当前工作目录中找到该文件。 换句话说,如果您在名为A的目录中运行脚本,并且包含在目录B中找到的脚本,则执行在目录B中找到的脚本时,相对路径将相对于A解析。因此,如果脚本在目录B的内部包含另一个目录中的文件,路径仍将按照您的预期相对于A而不是相对于B进行计算。 这是了解PHP和其他语言(如C / C ++)之间差异的非常重要的一点。

一种解决方案是使用dirname(__FILE__)

使用dirname(__FILE__) - __FILE__常量包含所用脚本的完整路径和文件名。函数dirname()从路径中删除文件名,给出文件所在目录的绝对路径其中的脚本包括它。 使用它可以让我们选择像使用其他语言一样使用相对路径的选项,如C / C ++。 我们将前缀所有我们的相对路径如下所示:

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

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

链接地址: http://www.djcxy.com/p/69255.html

上一篇: PHP Warning: failed to open stream: No such file or directory, File Path Errors

下一篇: once failed to open stream: No such file or directory