命令行上的行为差异

从 CLI 运行时,PHP 表现出一些与从 Web 服务器运行时不同的行为。应牢记这些差异,尤其是在可能从两个环境运行相同脚本的情况下。

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