ubuntu 20.04 默认仅装php包,不包含必需的php-cli组件,导致php命令不可用;应执行sudo apt install php-cli验证,再运行php -r "echo 'ok';"确认输出。

php 命令能直接跑,但多数人卡在环境没装全、路径写错、权限没给,或者误以为装了 PHP 就等于能跑 Web 脚本。
确认 php-cli 是否真正可用
Ubuntu 20.04 默认源只带 php 包,但它不等于 php-cli —— 后者才是命令行执行脚本必需的组件。只装 php 可能导致 php: command not found 或 Segmentation fault。
- 运行
php -v,如果报错或无输出,说明 CLI 模块缺失 - 正确安装方式是:
sudo apt install php-cli(不是sudo apt install php) - 验证:执行
php -r "echo 'ok';",应输出ok - 注意:Ubuntu 20.04 默认是 PHP 7.4,若你手动加了
ppa:ondrej/php,则需明确指定版本,如php7.4 script.php
脚本执行失败常见原因和修复
写了 script.php,执行 php script.php 却报错或没反应?大概率是这几类问题。
-
Parse error: syntax error:PHP 版本太低(比如用了match表达式但用的是 PHP 7.4),用php -v确认版本,必要时改用php8.1命令 - 脚本开头有 BOM(尤其 Windows 编辑器保存的),会导致
PHP Warning: Cannot modify header information或空白输出;用file script.php检查编码,用sed -i '1s/^\xEF\xBB\xBF//' script.php清除 - 路径错误:当前目录不是脚本所在目录,或用了相对路径但工作目录不对;建议始终用绝对路径执行,如
php /home/user/project/script.php - 脚本里用了扩展(如
mysqli),但没装对应模块;运行php -m | grep mysqli查看是否加载,缺失就装sudo apt install php-mysql
让脚本像普通命令一样直接运行(shebang 方式)
想双击或输入 ./script.php 就跑,而不是每次都敲 php xxx?关键在 shebang 和权限。
- 第一行必须是
#!/usr/bin/env php(不能是#!/usr/bin/php,后者在不同系统路径可能失效) - 保存后执行
chmod +x script.php(注意不是chmod 777,+x 就够) - 然后直接运行:
./script.php;如果报Permission denied,检查是否在挂载的 NTFS 或 FAT32 分区(Linux 不支持这些文件系统上的可执行位) - 注意:这种写法下,
$argv从$argv[0]开始就是脚本名,不是php,和纯php script.php行为一致
Web 方式运行时 502 或空白页怎么快速定位
把脚本放到 /var/www/html/,浏览器打开却显示 502 Bad Gateway 或一片空白?别急着重装,先看这三处。
- Nginx/Apache 是否真在跑:
systemctl status nginx或systemctl status apache2,状态必须是active (running) - PHP-FPM 是否启动且监听对的 socket:
systemctl status php7.4-fpm(版本要匹配),再查ls -l /var/run/php/看php7.4-fpm.sock是否存在 - Nginx 配置里
fastcgi_pass的路径是否和实际 socket 一致;例如 Ubuntu 20.04 上通常是unix:/var/run/php/php7.4-fpm.sock,不是/run/php/... - 临时测试:在浏览器访问
http://localhost/info.php(内容为<?php phpinfo(); ?>),能出来就说明 Web+PHP 链路通了
PHP 在 Ubuntu 20.04 上跑不起来,90% 的问题不在代码本身,而在 CLI 模块缺失、扩展没装、路径或权限搞错,或是 Web 服务之间 socket 对不上。盯住 php -v、systemctl status、ls -l /var/run/php/ 这三个命令,比反复重装快得多。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











