23

我的文件结构是这样的:

config.php
script
|--myscript.php

我的脚本.php

<?php
require '../config.php';
?>

执行时php /path/to/myscript.php我得到Warning: require(../config.php): failed to open stream: No such file or directory.

什么原因?

4

5 回答 5

26

那是因为您当前的工作目录是您调用命令的目录,而不是您的脚本所在的目录。

采用

require __DIR__ . '/../config.php';

反而。__DIR__是一个常量,指向当前文件所在的目录。

于 2012-09-11T20:53:08.790 回答
8

我这样做的一种方法是这样的:

php -d include_path=/path/to/config.php script.php

-d 用于在运行时设置 INI 指令,因此您没有任何更改的代码/配置/目录。

于 2014-06-29T07:42:56.120 回答
2

如果您不想(或不能)更改require代码中的行,只需cd在运行脚本之前更改脚本期望在其中执行的目录:

cd /path/to
php /path/to/myscript.php
于 2013-09-10T18:19:04.410 回答
2

您需要使用绝对路径或更改工作目录:

chdir(dirname(__FILE__));

于 2017-06-23T08:45:31.353 回答
1

很可能您的工作目录错误,因此您的相对路径未指向您期望的位置。要查看 PHP 如何看待它,请添加:

echo getcwd();

作为脚本的第一行。

于 2012-09-11T20:53:16.690 回答