我有一个PHP脚本,其中包含相邻目录中的另一个文件。
示例代码:
include("../lib/file.php");
当您从浏览器访问运行它的页面但是如果我从终端或cron运行它时失败(在提到的include()行上),代码工作正常。
我收到一条警告,上面写着“/ path / to / file.php中没有这样的文件或目录”,因此我尝试从该文件调用的类不存在,这会导致致命的错误。
什么会导致它在浏览器中起作用,但从终端失败。
答案 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模式)所以配置可能不同(包括路径,在你的情况下可能很重要)。