PHP-为什么不通过../为我工作相对路径,却使用./做事?

问题描述

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

Failed to open stream : No such file or directory

我使用

  • Windows 10
  • Phpstorm 2017

  • wampserver 3.0.0 for localhost

此wamp具有有效的PHP 5.6.16和Apache 2.4.17。

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

我的目录与此:

|_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中更改任何目录设置?

解决方法

简单理解:

  • 一个点(.)表示当前目录(脚本所在的目录);
  • 两个点(..)表示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';

看看为什么要here

,

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...