linux nginx 支持php
Nginx + PHP:从“无法解析”到“完美运行”的实战指南
当你在Linux服务器上部署PHP项目时,是否遇到过这样的情况:访问页面时,浏览器直接下载PHP文件,或者显示“403 Forbidden”?这往往是因为Nginx默认不处理PHP请求——它需要通过FastCGI协议与PHP解释器协作,才能将PHP代码解析为浏览器可识别的HTML。今天,我们就用3个核心步骤,让Nginx完美支持PHP。
一、先搞懂:Nginx为什么需要PHP-FPM?
Nginx是一款轻量级的Web服务器,擅长处理静态资源(如HTML、CSS、图片),但对动态脚本(PHP)“一窍不通”。这时候就需要PHP-FPM(FastCGI Process Manager)——它是PHP的FastCGI进程管理器,负责接收Nginx转发的PHP请求,执行代码后返回结果。
简单来说:Nginx是“前台接待员”,负责接收用户请求;PHP-FPM是“后端工程师”,负责处理动态逻辑。二者通过FastCGI协议通信,才能让PHP项目跑起来。
二、实战步骤:从安装到配置
1. 安装依赖:Nginx + PHP-FPM
以Ubuntu/Debian系统为例(CentOS可替换为yum):
# 更新软件源
sudo apt update
# 安装Nginx和PHP-FPM(以PHP7.4为例,可替换为8.0/8.1)
sudo apt install nginx php7.4-fpm -y

安装完成后,启动并设置开机自启:
sudo systemctl start nginx php7.4-fpm
sudo systemctl enable nginx php7.4-fpm
2. 配置Nginx:让它“认识”PHP
Nginx的配置文件通常在/etc/nginx/sites-available/目录下,我们以默认的default配置为例修改:
sudo nano /etc/nginx/sites-available/default
找到server块,修改以下内容(关键是location ~ \.php$部分):
server {
listen 80;
server_name your_domain.com; # 替换为你的域名或IP
root /var/www/html; # 网站根目录
index index.php index.html index.htm; # 优先解析index.php
# 处理PHP请求
location ~ \.php$ {
include snippets/fastcgi-php.conf; # 引入FastCGI配置片段
fastcgi_pass unix:/run/php/php7.4-fpm.sock; # PHP-FPM的监听地址(注意版本)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 告诉PHP脚本路径
include fastcgi_params;
}
# 禁止直接访问.htaccess等隐藏文件
location ~ /\.ht {
deny all;
}
}
配置说明:
fastcgi_pass:PHP-FPM的监听方式有两种——unix socket(性能更好,路径如/run/php/php7.4-fpm.sock)或TCP端口(如127.0.0.1:9000),需与PHP-FPM配置一致;SCRIPT_FILENAME:必须正确设置,否则PHP会找不到脚本文件,返回“404”。
3. 验证配置:让一切“活”起来
修改完配置后,先检查Nginx配置是否有误:
sudo nginx -t
如果显示test is successful,重启Nginx生效:
sudo systemctl restart nginx
接下来,创建一个测试PHP文件验证效果:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/test.php
现在,打开浏览器访问http://你的服务器IP/test.php——如果能看到PHP信息页面,说明配置成功!
三、常见坑点:你可能会遇到这些问题
- PHP文件下载而不解析:检查Nginx的
location ~ \.php$配置是否存在,或fastcgi_pass是否正确; - 403 Forbidden:确保网站根目录(如
/var/www/html)的权限为www-data:www-data(Nginx和PHP-FPM默认用户),可执行sudo chown -R www-data:www-data /var/www/html; - 502 Bad Gateway:PHP-FPM未启动或监听地址不匹配,检查
/etc/php/7.4/fpm/pool.d/www.conf中的listen配置是否与Nginx一致。
写在最后
Nginx + PHP的组合,是当前主流的Web服务架构之一——Nginx的高并发处理静态资源,PHP-FPM的高效解析动态脚本,二者搭配能让你的项目既稳定又快速。只要掌握“安装依赖→配置转发→验证效果”这三步,就能轻松搞定Nginx对PHP的支持。
下次部署PHP项目时,不妨按照这个指南操作,让你的代码不再“躺平”,而是真正“跑”起来!





