php Web环境需手动配置:apache+mod_php适合开发但内存开销大;nginx+PHP-FPM为生产推荐,需确保版本对齐、socket路径匹配及权限正确,配置后须验证各组件版本一致性。

PHP 运行环境在 linux 上不是“装一个包就完事”
直接用系统包管理器安装 php 包,大概率只能跑 CLI 脚本,Web 请求根本进不来。Apache 或 Nginx 不会自动把 PHP 文件交给 PHP 解释器处理,得手动配模块或代理,否则浏览器打开 index.php 就是直接下载或显示源码。
Apache + mod_php 是最简 Web 环境(仅限 debian/ubuntu)
适合本地开发或小项目,但要注意:mod_php 把 PHP 绑死在 Apache 进程里,每个请求都加载全部扩展,内存开销大,且不支持多版本共存。
- 执行
sudo apt update && sudo apt install apache2 php libapache2-mod-php - 确保
php7.4或php8.1等具体版本包已安装(apt search php | grep ^php查看可用版本) - 启用模块:
sudo a2enmod php8.1(版本号必须和实际安装一致) - 重启服务:
sudo systemctl restart apache2 - 写个
/var/www/html/info.php,内容为,访问
http://localhost/info.php确认输出正常
Nginx + PHP-FPM 是生产推荐组合(通用性强)
PHP 以独立进程池运行,更稳定、可调参数多、能平滑重启、天然支持多版本。但配置稍复杂,容易卡在 502 Bad gateway —— 通常因为 PHP-FPM 没启、socket 路径不匹配、或权限不对。
- 安装:
sudo apt install nginx php-fpm(Debian/Ubuntu);centos/RHEL 用sudo dnf install nginx php-fpm - 确认 PHP-FPM 服务状态:
sudo systemctl status php8.1-fpm(版本名需匹配) - 编辑 Nginx server 块,关键段落必须包含:
location ~ .php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.1-fpm.sock; } -
fastcgi_pass的 socket 路径要和php-fpm.conf里listen =的值一致(常见路径有/run/php/phpX.Y-fpm.sock或/var/run/php/phpX.Y-fpm.sock) - 检查用户权限:Nginx worker 用户(通常是
www-data或nginx)必须对 socket 文件有读写权,可在www.conf中设listen.owner = www-data和listen.group = www-data
别跳过验证步骤,尤其注意版本对齐和错误日志
PHP CLI 版本(php -v)、Web 模块版本(phpinfo() 输出)、FPM 配置版本(php-fpm -t)、Nginx 日志(/var/log/nginx/Error.log)、PHP-FPM 日志(/var/log/php8.1-fpm.log)四者不一致,是绝大多数“页面空白”“502”“500”的根源。改完任何配置,先 sudo nginx -t 测语法,再 sudo systemctl reload nginx,而不是直接 restart。
立即学习“PHP免费学习笔记(深入)”;