我的文件结构如下:
config.php
script
|--myscript.php
myscript.php
<?php
require '../config.php';
?>
执行php /path/to/myscript.php
时,我得到Warning: require(../config.php): failed to open stream: No such file or directory.
是什么原因?
答案 0 :(得分:24)
那是因为您当前的工作目录是您调用命令的目录,而不是脚本所在的目录。
使用
require __DIR__ . '/../config.php';
代替。 __DIR__
是一个const,指向当前文件所在的目录。
答案 1 :(得分:6)
我这样做的一种方式是:
php -d include_path=/path/to/config.php script.php
-d用于在运行时设置INI指令,因此您不会有任何更改的代码/配置/目录。
答案 2 :(得分:2)
如果您不想(或不能)更改代码中的require
行,只需cd
到运行脚本之前脚本期望执行的目录:
cd /path/to
php /path/to/myscript.php
答案 3 :(得分:1)
很可能你的工作目录错了,所以你的相对路径没有指向你期望的位置。要了解PHP如何看待它,请添加:
echo getcwd();
作为剧本的第一行。
答案 4 :(得分:1)
您需要使用绝对路径或更改工作目录:
chdir(dirname(__FILE__));