最可靠的方式是用 php_sapi_name() 判断:if (php_sapi_name() !== ‘cli’) { die(“This script can only be run in CLI mode.\n”);},返回 ‘cli’ 才代表真正处于命令行上下文。
判断当前是否在 CLI 环境下运行
PHP 脚本既可能被 Web 服务器调用,也可能被命令行直接执行。必须先确认运行环境,否则 $_SERVER['argv'] 可能未定义或行为异常,Web 环境下还可能暴露敏感参数。
最可靠的方式是用 php_sapi_name() 判断:
if (php_sapi_name() !== 'cli') {
die("This script can only be run in CLI mode.\n");
}
-
php_sapi_name()返回'cli'才代表真正处于命令行上下文;isset($_SERVER['argv'])或!empty($_SERVER['argv'])不够严谨,某些 CGI 模式下也存在 - 避免用
getenv('TERM')或检测STDIN是否为终端,这些在 Docker 容器或 CI 环境中容易误判
解析 $argv 和 $argc 的基本套路
PHP CLI 启动时自动填充全局变量 $argv(参数数组)和 $argc(参数个数)。$argv[0] 是脚本路径,后续才是用户传入的参数。
简单位置参数处理示例:
立即学习“PHP免费学习笔记(深入)”;