PHP怎样让CLI模式可运行_PHP让CLI模式可运行条件【运行】

PHP CLI 运行需满足三前提:安装 php-cli 包、CLI 专用 php.ini 启用所需扩展、脚本首行添加 #!/usr/bin/env php Shebang。

php怎样让cli模式可运行_php让cli模式可运行条件【运行】

PHP CLI 模式能运行的前提是二进制文件本身可用

不是所有 PHP 安装都自带可执行的 php 命令。很多 Linux 发行版(比如 Ubuntu)把 CLI 和 Apache/FPM 模块拆成不同包,只装 php-fpmlibapache2-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)。

CLI 模式默认禁用某些扩展和配置项

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 的配置。

脚本开头必须有正确的 Shebang(Linux/macOS)

想直接 ./script.php 运行,第一行必须是 Shebang,且指向真实 PHP CLI 可执行路径:

#!/usr/bin/env php

注意:

  • 不能写成 #!/usr/bin/php —— 路径可能因系统而异;/usr/bin/env php 更可靠
  • 文件需加执行权限:chmod +x script.php
  • Windows 不认 Shebang,直接用 php script.php
  • Shebang 行末不能有多余空格或 BOM,否则报 bad interpreter

CLI 模式下 $_SERVER 和输出行为与 Web 不同

很多框架或老代码依赖 $_SERVER['DOCUMENT_ROOT']$_SERVER['REQUEST_URI'],这些在 CLI 下是空或未定义的,直接访问会触发 Notice。另外:

琅琅配音

琅琅配音

全能AI配音神器

下载

  • echo / var_dump() 输出直接到终端,不会被 Web 服务器缓冲或截断
  • CLI 没有输出缓冲自动刷新,大日志写入建议显式 flush() 或用 file_put_contents(..., FILE_APPEND)
  • readline()fgets(STDIN) 才是标准输入方式,$_GET/$_POST 全为空

一个典型坑:用 header("Location: ...") 重定向 —— CLI 下会直接报 Warning,因为无 HTTP 上下文。

https://www.php.cn/faq/1971881.html

发表回复

Your email address will not be published. Required fields are marked *