0

在我的 php 代码中,当我使用 require_once() 或其他相关函数并放置相对路径时,例如 (../ref_func.php),不起作用并出现此错误:

Failed to open stream : No such file or directory

我用

  • 视窗 10
  • 2017 年 PHP 风暴

  • 本地主机的 wampserver 3.0.0

这个 wamp 有 PHP 5.6.16 和 Apache 2.4.17 活动。

require_once(../ref_func.php) 位于名为 checklog_folder 的文件夹中的 clog.php 中。

我的目录是这样的:

|_www
    |_myweb
      |_scss_folder
         |_content.scss
         |_footer.scss
         |_globals.scss
         |_header.scss
      |_ref_folder
         |_main.css
         |_ref_func.php
      |_checklog_folder
         |_clog.php

但是当我使用单点时,这可以正常工作。虽然在所有 PHP 培训资源中都写到应该使用两个点。

为什么会发生这种情况,它的工作原理是这样的?

您可以在目录树中从下到上的第三行找到 ref_func.php

我没有更改 PHP 或 Apache 中的任何目录设置??

4

2 回答 2

2

简单理解:

  • 一个点 ( .) 表示当前目录(脚本所在的目录);
  • 两个点(..)表示the parent directory
  • ../../表示父目录的父目录;
  • 等等

ref_func.php在您的情况下,要从导入clog.php,您需要:

  • 离开checklog_folder( ../)
  • 输入ref_folder( ../ref_folder/)
  • 并访问ref_func.php( ../ref_folder/ref_func.php)

所以你会这样做:

require_once '../_ref_folder/_ref_func.php';

但是我更喜欢

require_once __DIR__ . '/../_ref_folder/_ref_func.php';

看看为什么在这里

于 2020-08-13T09:05:14.660 回答
1

你应该这样做 require_once("../_ref_folder/_ref_func.php"); 你忘了写 ref_func.php 文件存在于你的路径中的文件夹。

于 2020-08-13T07:33:03.303 回答