从终端运行而不是从Web运行时,include()失败

时间:2010-11-05 23:44:50

标签: php

我有一个PHP脚本,其中包含相邻目录中的另一个文件。

示例代码:

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

当您从浏览器访问运行它的页面但是如果我从终端或cron运行它时失败(在提到的include()行上),代码工作正常。

我收到一条警告,上面写着“/ path / to / file.php中没有这样的文件或目录”,因此我尝试从该文件调用的类不存在,这会导致致命的错误。

什么会导致它在浏览器中起作用,但从终端失败。

2 个答案:

答案 0 :(得分:8)

始终始终使用包含的绝对路径:

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

答案 1 :(得分:1)

始终使用绝对路径。

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