

新闻资讯
技术百科PHP CLI 运行需满足三前提:安装 php-cli 包、CLI 专用 php.ini 启用所需扩展、脚本首行添加 #!/usr/bin/env php Shebang。
不是所有 PHP 安装都自带可执行的 php 命令。很多 Linux 发行版(比如 Ubuntu)把 CLI 和 Apache/FPM 模块拆成不同包,只装 php-fpm 或 libapache2-mod-php 是不够的。
必须确认系统 PATH 中存在且可执行:
which php php -v如果报
command not found,说明 CLI 版本根本没装。Ubuntu/Debian 下要装 php-cli 包;CentOS/RHEL 8+ 需装 php-common + php-cli(或直接 dnf install php)。
PHP CLI 和 Web SAPI(如 Apache)使用不同的 php.ini 文件,路径通常不一致:
php --ini常见差异包括:
display_errors = On(CLI 默认开,Web 默认关)extension=opcache.so(CLI 默认不加载,避免干扰脚本调试)max_execution_time = 0(CLI 默认不限时,Web 默认 30 秒)pdo_mysql 却报 Class 'PDO' not found,先检查 CLI 的 php.ini 是否启用了对应 extension,而不是复用 Web 的配置。
想直接 ./script.php 运行,第一行必须是 Shebang,且指向真实 PHP CLI 可执行路径:
#!/usr/bin/env php 注意:
#!/usr/bin/php —— 路径可能因系统而异;/usr/bin/env php 更可靠chmod +x script.php
ndows 不认 Shebang,直接用 php script.php
bad interpreter
很多框架或老代码依赖 $_SERVER['DOCUMENT_ROOT'] 或 $_SERVER['REQUEST_URI'],这些在 CLI 下是空或未定义的,直接访问会触发 Notice。另外:
echo / var_dump() 输出直接到终端,不会被 Web 服务器缓冲或截断flush() 或用 file_put_contents(..., FILE_APPEND)
readline()、fgets(STDIN) 才是标准输入方式,$_GET/$_POST 全为空header("Location: ...") 重定向 —— CLI 下会直接报 Warning,因为无 HTTP 上下文。