php 7.3 脚本能跑起来的关键是 cli 与 web 环境配置匹配,需分别验证 php -v 和 php --ini 确认版本及加载的 php.ini 路径,再用 php -m 检查扩展是否在对应环境启用,并注意宝塔等面板默认只配 fpm、未同步 cli 配置。

PHP 7.3 脚本能跑起来,关键不是版本新旧,而是执行环境是否匹配——CLI 和 Web(FPM/Apache)用的是两套配置、两套扩展、甚至两个 php.ini 文件。
确认当前 CLI 环境是否就绪
命令行运行最直接,但最容易卡在“找不到 php”或“扩展没加载”。先验证基础:
- 终端执行
php -v,输出含7.3.x才算真正装了 PHP 7.3(不是系统默认的 8.x 或 5.6) - 执行
php --ini,看 Loaded Configuration File 路径,比如/etc/php/7.3/cli/php.ini—— 这才是 CLI 实际读的配置 - 如果脚本用到
redis或swoole,得确认这些扩展在 CLI 下也启用了:php -m | grep redis - 常见坑:宝塔面板装的 PHP 7.3,默认只给 FPM 启用了扩展,CLI 里
php -m看不到redis,得手动在 CLI 的php.ini里加extension=redis.so
Web 环境下 .php 文件不执行,只下载或空白
这不是 PHP 7.3 的问题,是 Nginx/Apache 没把请求交给 PHP-FPM 处理。重点查三处:
- Nginx 配置里必须有
location ~ \.php$块,且fastcgi_pass指向正确的 PHP-FPM socket 或端口,比如unix:/var/run/php/php7.3-fpm.sock - PHP-FPM 服务必须运行:
sudo systemctl status php7.3-fpm,状态不是 active (running) 就起不来 - 检查 FPM pool 配置(如
/etc/php/7.3/fpm/pool.d/www.conf),listen地址必须和 Nginx 的fastcgi_pass完全一致 - 别信“改完配置 reload 就行”——有时要
sudo systemctl restart php7.3-fpm才生效,reload 只重载配置,不重启进程
脚本里调用 proc_open 报错“Function disabled”
PHP 7.3 默认禁用高危函数,proc_open 在宝塔等面板里常被加入禁用列表。解决方法很直接:
- 进宝塔 → PHP 设置 → 禁用函数 → 找到
proc_open,删掉它(注意:不是注释,是彻底删除) - 如果用源码编译安装,禁用函数在
php.ini的disable_functions行里,删掉proc_open即可 - 改完必须重载 PHP-FPM:
sudo systemctl reload php7.3-fpm或宝塔点“重载配置” - 注意:删
proc_open有安全风险,仅限可信内网环境;生产环境建议用shell_exec+ 白名单命令替代
内存不足、超时、扩展加载失败这类报错
PHP 7.3 对资源限制更敏感,尤其处理大文件或长任务时:
-
memory_limit:CLI 下建议设为-1(无限制),Web 下设300M以上(宝塔里直接改配置修改页) -
max_execution_time:CLI 默认 0(不限制),Web 默认 30 秒,长任务需调高,比如300 -
swoole_loader73.so这类 loader 扩展,必须严格匹配 PHP 版本和线程模型(ZTS/non-ZTS),装错会直接导致 PHP 启动失败,报错类似undefined symbol: php_pcre2_match - 扩展路径写错也会静默失败:确认
extension_dir指向正确目录,比如/usr/lib/php/20180731/(PHP 7.3 的 ABI 版本号是 20180731)
PHP 7.3 的兼容性本身不是问题,真正卡住人的永远是配置路径、扩展加载时机、以及 CLI 和 FPM 之间那套看不见的双配置体系。别急着换版本,先 php --ini 和 phpinfo() 对着看两遍,90% 的“跑不起来”都能当场定位。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











