使用 require_once 导入上级目录不起作用

38

我正在这样使用 require_once

require_once('../mycode.php')

我正在开发WordPress插件。我的插件文件夹名为yves-slider,其中包含一个名为yves-slider.php的文件和一个名为admin的文件夹。在admin文件夹中,我有一个名为admin.php的文件。我想要在位于上一级目录的admin.php文件中引用yves-slider.php文件。当我尝试使用

require_once('../yves-slider.php')

这给我带来了以下错误:

警告:require_once(../yves-slider.php):打开流失败:C:\xampp\htdocs\wordpress\wp-content\plugins\yves-slider\yves-slider-admin\yves-slider-admin.php中没有此类文件或目录第4行

致命错误:require_once():在C:\xampp\htdocs\wordpress\wp-content\plugins\yves-slider\yves-slider-admin\yves-slider-admin.php的第4行打开所需的'../yves-slider.php'时出错(include_path='.;C:\xampp\php\PEAR')

我做错什么了吗? 我正在使用XAMPP 3.1,我想这是最好的方法。


经常会遇到这个错误,为了快速排除故障,请按照以下步骤操作:stackoverflow.com/a/36577021/2873507 - Vic Seedoubleyew
1个回答

70

您希望将此文件与当前路径相关联:

require_once __DIR__ . '/../yves-slider.php';

可能发生的情况是PHP当前查找的路径并不是你想要的路径。如果你好奇它是什么(当前路径),你可以执行echo getcwd();


1
你的例子中缺少一个斜杠“/”啊,哈哈,谢谢。我会在6分钟内检查你的回答。为什么我需要一个斜杠“/”,而不是直接使用“../yves-slider.php”呢? - Yves Gonzaga
但我想知道为什么这种“相对”路径可以工作:require_once“directory/class.php” - emfi
1
@emfi 这些是相对于当前工作目录的,应该避免使用以增加代码的灵活性。 - PeeHaa
好的,我不使用这种方法,尽管我不明白为什么需要更多的灵活性? - emfi
例如,当通过CLI运行文件时,当前工作目录不会更改。这意味着当执行简单的require_once "directory/class.php"时,可能无法在您认为的目录中加载文件。 - PeeHaa
2
我已经开始为这个常见的错误制作故障排除清单,链接在这里:stackoverflow.com/a/36577021/2873507 - Vic Seedoubleyew

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接