问题描述
当我使用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文件的文件夹。