2010-11-05 104 views
2

我有一个PHP脚本,其中包含相邻目录中的另一个文件。include()在从终端运行时失败,但不从网络运行时

示例代码:

include("../lib/file.php"); 

代码工作正常,当您通过浏览器访问运行它的页面,但失败(中提到的包括()线),如果我从终端或cron运行它。

我收到一条警告,提示“在/path/to/file.php中没有这样的文件或目录”,导致我试图从该文件调用的类不存在,导致致命错误。

什么会导致这从浏览器工作,但终端失败。

+0

我猜想当你从终端执行代码时,路径是相对于php.exe目录的。 – Harmen 2010-11-05 23:47:05

回答

8

始终始终始终使用绝对路径,与包括:

include(dirname(__FILE__) . "/../lib/file.php"); 
+0

每天学习一些东西(很难)。谢谢你,先生。 – Evan 2010-11-06 00:00:45

1

总是使用绝对路径。

至于第二个想法,从终端上运行PHP的,如果你的Web服务使用Apache的mod_php的或/etc/php5/cgi/php.ini如果它运行PHP作为CGI将执行PHP作为CLI,所以使用的php.ini中是不同的(通常,/etc/php5/cli/php.ini而不是/etc/php5/apache2/php.ini/fastcgi模式),所以配置可能不同(包括路径,在你的情况下可能很重要)。

相关问题