如何将PHP脚本的执行限制为命令行(检测是否从CLI运行PHP)

函数php_sapi_name()和常量PHP_SAPI均返回PHP正在使用的接口类型(服务器API)。通过检查函数的输出是否等于cli, 可以将它们用于限制脚本在命令行中的执行。你可以通过以下条件从CLI或Web服务器验证你是否正在运行PHP:

< ?phpif (php_sapi_name() === 'cli') {echo "Executed from command line! \n"; } else {echo "Executed from the web browser! \n"; }

或使用PHP_SAPI常量:
< ?phpif(PHP_SAPI == 'cli') {echo "Executed from command line! \n"; } else {echo "Executed from the web browser! \n"; }

从CLI运行时, 值得一提的是PHP的行为与从Web服务器运行时的行为有所不同。这些差异应牢记在心, 尤其是在两个环境中都可能运行相同脚本的情况下。
  • 从Web服务器运行脚本时, 当前工作目录始终是脚本本身的目录。代码require(” ./ stuff.inc” ); 假定文件与脚本位于同一目录中。在命令行上, 当前工作目录是调用脚本时所在的目录。从命令行调用的脚本应始终使用绝对路径。 (请注意, 魔术常量__DIR__和__FILE__继续按预期工作, 并返回了脚本的位置。)
  • 如果你启用了php.ini指令html_errors, 它将在命令行上被忽略。
  • 没有输出缓冲php.ini指令output_buffering和隐含的刷新分别默认为false和true。缓冲仍然可用, 但是必须显式启用, 否则输出将始终实时显示。
  • php.ini指令max_execution_time设置为零, 因此默认情况下脚本不会超时(无时间限制)。
  • 初始化期间可以加载不同的php.ini, 因此, 当你使用cli中的php时, 它可以使用与Web服务器不同的php.ini。你将可以通过运行php – ini来识别我们使用的文件。
【如何将PHP脚本的执行限制为命令行(检测是否从CLI运行PHP)】编码愉快!

    推荐阅读