php 8.1 cli 可直接执行脚本,但必须确认 php -v 输出为 8.1、安装 php8.1-cli 包、使用正确二进制路径,并注意 cli 与 web 环境的 php.ini 分离、路径权限、类型严格性及弃用警告。

php 命令能直接执行脚本,无需额外适配 PHP 8.1 —— 只要 CLI SAPI 已安装且路径正确,语法和行为与旧版基本一致,但有几个关键点必须注意。
确认 CLI 是否就位且版本匹配
PHP 8.1 的 CLI 和 Web(如 FPM)是分离的二进制和配置,不能靠 php -v 看到版本就默认 CLI 可用:
– 运行 php -v,确认输出含 8.1.(不是 7.x 或 8.2+);
– 若提示 command not found,说明 CLI 包未装,Ubuntu/Debian 下需显式安装 php8.1-cli(仅装 php8.1 不保证含 CLI);
– 检查实际二进制路径:which php,常见为 /usr/bin/php,但多版本共存时可能是 /usr/bin/php8.1,此时得用全名调用。
执行脚本时路径和权限最容易出错
报错 Could not open input file 几乎全是路径问题:
– php script.php 要求当前工作目录就是脚本所在目录;
– 用相对路径如 php ./bin/run.php 更安全;
– 绝对路径最稳:php /var/www/app/migrate.php;
– 若加 shebang(#!/usr/bin/env php),必须 chmod +x migrate.php,且确保 /usr/bin/env 能定位到 PHP 8.1(env php -v 应输出 8.1);
– Windows 用户别折腾 shebang,老实用 php migrate.php。
CLI 和 Web 环境的 php.ini 完全不同
PHP 8.1 默认把 CLI 和 FPM 配置文件分开存放,直接影响脚本行为:
– CLI 配置路径查法:php --ini → 输出类似 Loaded Configuration File: /etc/php/8.1/cli/php.ini;
– Web(FPM)配置在 /etc/php/8.1/fpm/php.ini 或 /etc/php/8.1/apache2/php.ini;
– 典型差异:CLI 默认 display_errors = Off,出错静默;Web 端常开;
– CLI 的 memory_limit 多设为 -1,而 Web 端限制严格(如 128M),脚本在 CLI 跑通不代表在浏览器里不超限;
– 别依赖 $_SERVER['DOCUMENT_ROOT'],CLI 下它不存在,改用 __DIR__ 或 dirname(__FILE__) 。
传参和调试要避开 PHP 8.1 的新约束
PHP 8.1 引入了更严格的类型检查和弃用警告,命令行下容易被忽略:
– $argv 仍可用,但若脚本启用了 strict_types,传参前需显式类型转换;
– 用 php -d display_errors=1 script.php 临时打开错误显示,比改 ini 文件快;
– php -l script.php 可语法校验,PHP 8.1 对未声明类型参数、废弃函数(如 mysql_connect)会直接报 fatal error;
– php -r "echo PHP_VERSION;" 快速验证当前 CLI 版本,避免多版本混用导致行为不一致。
php、加载的是哪份 php.ini、以及脚本里有没有踩中 PHP 8.1 的严格模式或已弃用特性。php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











