命令行上的行为差异
从 CLI 运行时,PHP 表现出一些与从 Web 服务器运行时不同的行为。应牢记这些差异,尤其是在可能从两个环境运行相同脚本的情况下。
- 无目录更改从 Web 服务器运行脚本时,当前工作目录始终是脚本本身的目录。代码
require("./stuff.inc");
假定文件与脚本位于同一目录中。在命令行上,当前工作目录是你调用脚本时所在的目录。将从命令行调用的脚本应始终使用绝对路径。 (注意魔术常量__DIR__
和__FILE__
继续按预期工作,并返回脚本的位置。) - 无输出缓冲
php.ini
指令output_buffering
和implicit_flush
分别默认为false
和true
。缓冲仍然可用,但必须明确启用,否则将始终实时显示输出。 - 没有时间限制
php.ini
指令max_execution_time
设置为零,因此默认情况下脚本不会超时。 - 没有 HTML 错误如果你启用了
php.ini
指令html_errors
,它将在命令行中被忽略。 - 可以加载不同的
php.ini
。当你从 cli 使用 php 时,它可以使用与 Web 服务器不同的php.ini
。你可以通过运行php --ini
来了解正在使用的文件。