PHP CLI include()找不到该文件

时间:2012-09-11 20:51:21

标签: php

我的文件结构如下:

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.

是什么原因?

5 个答案:

答案 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__));