2012-09-11 110 views
17

结构是像这样:PHP CLI包括()未找到文件我的文件

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

以绝对路径试试吧,而不是相对的。 – andrewsi

+0

是的,我现在很失望。 – nick

回答

24

那是因为你当前的工作目录是一个你打电话给你的命令,而不是一个你的脚本位于。

使用

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

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

1

很可能你的工作目录错误,所以你的相对路径并不指向你期望的位置。看看PHP如何看到它:

echo getcwd(); 

作为脚本的第一行。

1

如果你不想(或不能)在你的代码,改变require线只是cd到你的脚本需要运行脚本之前中执行的目录:

cd /path/to 
php /path/to/myscript.php 
6

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

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

-d用于在运行时设置INI指令,所以你不要有任何更改代码/ CONFIGS /目录。

0

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

chdir(dirname(__FILE__));