必须确保cli使用php 8.0+版本,因path中旧版路径优先会导致php -v显示错误版本;需用which php或where php定位真实路径,并验证php -v与目标路径下php8.0 -v一致。

PHP 8.0 脚本可以直接用 php 命令运行,但必须确保 CLI 使用的是 PHP 8.0+ 版本,而不是系统默认的旧版本(比如 7.4 或更低)。
确认 CLI 使用的是 PHP 8.0+
很多人以为装了 PHP 8.0 就万事大吉,结果 php -v 显示的却是旧版本——根本原因是 PATH 中旧版 PHP 路径排在前面。
- 运行
which php(Linux/macOS)或where php(Windows CMD)查看实际调用的可执行文件路径 - 对比
php -v和/path/to/php8.0/bin/php -v输出是否一致 - Windows 用户常见陷阱:
php.exe可能来自C:\xampp\php\或C:\php\,而非你新解压的 8.0 目录;需手动调整系统环境变量中 PHP 路径顺序
直接执行脚本:php script.php
这是最基础也最易出错的方式。PHP 8.0 对语法和类型更严格,以下情况会直接报错而非警告:
- 函数参数类型不匹配:比如声明
function foo(int $x) { },却传入foo("123")→ 报TypeError - 使用已被移除的函数:如
mysql_connect()、ereg()等,在 PHP 8.0 中已彻底删除,不是弃用(deprecated),而是直接Fatal error - 数组下标访问 null:PHP 7 允许
$arr = null; echo $arr[0];(输出 notice),PHP 8.0 默认抛出TypeError
启动内置服务器:php -S 的注意事项
PHP 内置服务器在 8.0 下行为有细微但关键变化,尤其影响本地开发调试:
-
php -S 127.0.0.1:8000正常,但php -S 0.0.0.0:8000在 Windows 上大概率失败——不是命令错,是 PHP 8.0+ 的 Windows 版本对通配地址绑定支持不稳定 - 路由文件必须显式指定:如
php -S 192.168.1.100:8000 public/router.php,否则静态资源(CSS/JS)可能 404 - PHP 8.0 默认启用严格模式,若
router.php中用了isset($GLOBALS['argv'])这类未声明变量访问,会触发Warning甚至Error
JIT 编译器不会自动生效,别指望“一装就快”
即使你装的是 PHP 8.0+,JIT 默认是关闭的,且对普通脚本无加速效果。
- 需在
php.ini中启用:opcache.jit=1205+opcache.jit_buffer_size=64M - JIT 只对长时间运行的脚本(如 CLI 持续任务、CLI 循环处理)有可观收益;Web 请求因生命周期短,几乎无提升
- 启用 JIT 后,首次运行反而略慢(编译开销),且只对 Opcache 缓存的脚本生效 —— 所以务必确认
opcache.enable=1
真正容易被忽略的点是:PHP 8.0 的错误级别大幅提高,很多过去只是 E_WARNING 的问题现在变成 Fatal Error;不要只看脚本能跑,得看它是否在所有分支下都通过类型校验和空值安全检查。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











