函数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来识别我们使用的文件。
推荐阅读
- 使用TestOps优化来升级DevOps软件管道
- 如何在Symfony 1.4中使用SwiftMailer从任务(控制台命令)发送电子邮件
- Prepaway-有关CompTIA 220-902认证考试的有用信息
- 如何在C#中检索控制台应用程序的可执行路径
- 如何在Google FeedBurner中启用Awareness API(FeedCount)
- 如何在Symfony 4中使用Doctrine正确计算表中的所有行
- 如何使用qpdf CLI删除PDF的密码
- Android(textview超链接)
- Android-是否可以将可点击链接添加到字符串资源中