我有一个PHP脚本,其中包含相邻目录中的另一个文件。include()在从终端运行时失败,但不从网络运行时
示例代码:
include("../lib/file.php");
代码工作正常,当您通过浏览器访问运行它的页面,但失败(中提到的包括()线),如果我从终端或cron运行它。
我收到一条警告,提示“在/path/to/file.php中没有这样的文件或目录”,导致我试图从该文件调用的类不存在,导致致命错误。
什么会导致这从浏览器工作,但终端失败。
我有一个PHP脚本,其中包含相邻目录中的另一个文件。include()在从终端运行时失败,但不从网络运行时
示例代码:
include("../lib/file.php");
代码工作正常,当您通过浏览器访问运行它的页面,但失败(中提到的包括()线),如果我从终端或cron运行它。
我收到一条警告,提示“在/path/to/file.php中没有这样的文件或目录”,导致我试图从该文件调用的类不存在,导致致命错误。
什么会导致这从浏览器工作,但终端失败。
始终始终始终使用绝对路径,与包括:
include(dirname(__FILE__) . "/../lib/file.php");
每天学习一些东西(很难)。谢谢你,先生。 – Evan 2010-11-06 00:00:45
总是使用绝对路径。
至于第二个想法,从终端上运行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模式),所以配置可能不同(包括路径,在你的情况下可能很重要)。
我猜想当你从终端执行代码时,路径是相对于php.exe目录的。 – Harmen 2010-11-05 23:47:05