应先确认系统类型再配置PHP环境:CentOS/RHEL需添加Remi源启用PHP 8.2,Ubuntu/Debian需启用universe源;LNMP必须用php-fpm而非mod_php;Nginx需正确配置fastcgi_pass并验证php-fpm运行状态;注意MySQL用户权限、扩展加载及SELinux等权限问题。
不同发行版的包管理器和默认仓库内容差异很大,直接 yum install php 或 apt install php 可能装到过时版本(如 PHP 7.4),甚至缺关键模块(如 php-fpm、php-mysqlnd)。务必先查清系统类型:
cat /etc/os-release。CentOS/RHEL 8+ 默认用
dnf,且官方源已移除 PHP;Ubuntu 22.04 默认带 PHP 8.1,但扩展需单独安装。
universe 源(/etc/apt/sources.list 中含 deb http://archive.ubuntu.com/ubuntu jammy universe)dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm),再启用 PHP 8.2 模块:dnf module enable php:remi-8.2
LNMP 中 PHP 必须以 php-fpm 方式运行,Nginx 本身不解析 PHP 文件。装错成 Apache 的 libapache2-mod-php 或 Nginx 的 php-cgi(已废弃)会导致 502 Bad Gateway 或 404。
apt install nginx php-fpm php-mysql php-curl php-gd php-mbstring php-xml ph
p-zip
/etc/php/8.1/fpm/pool.d/www.conf(监听套接字或端口)、/etc/nginx/sites-enabled/default(Nginx 需 proxy_pass 到 unix:/run/php/php8.1-fpm.sock 或 127.0.0.1:9000)php-fpm 是否启用并运行:systemctl is-enabled php8.1-fpm 和 systemctl status php8.1-fpm,否则 Nginx 请求会超时常见错误是 Nginx 配置里漏了 fastcgi_pass,或 fastcgi_param SCRIPT_FILENAME 指向错误路径,导致返回空白页或直接下载 .php 文件。
/var/www/html/info.php 写:location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}info.php,说明 Nginx 根本没把请求交给 PHP-FPM —— 检查 location 是否被更宽泛的规则(如 location /)覆盖,或 fastcgi_pass 地址与 php-fpm 实际监听地址不一致PHP 脚本能跑 phpinfo() 不代表能连数据库。两个高频断点:MySQL 用户未授权远程(或 localhost)访问,以及 mysqli 或 pdo_mysql 扩展未启用。
php -m | grep -E 'mysqli|pdo_mysql';若无输出,编辑 /etc/php/8.1/fpm/php.ini,取消注释 extension=mysqli 和 extension=pdo_mysql,然后重启 php8.1-fpm
'user'@'%' 就完事 —— 若 PHP-FPM 与 MySQL 同机,Nginx 传来的连接常是 localhost,需显式建 'user'@'localhost' 并 GRANT 权限mysqli_connect() 报错 Connection refused:优先查 mysql.service 是否运行,再查 bind-address 是否设为 127.0.0.1(而非 0.0.0.0 或注释掉)root 目录权限、PHP-FPM 的 user/group(默认 www-data 或 nginx)、SELinux 策略(RHEL 系默认开启)——这三个地方出问题,比 PHP 语法错误更难定位。
# mysql
# php
# linux
# centos
# html
# php8
# apache
# nginx
# 端口
# ubuntu
# 工具
# gateway
# xml
# cURL
# mysqli
# CGI
# var
# default
# location
# 数据库
# http
# https
# debian
# unix
# 而非
# 加载
# 发行版
# 设为
# 不代表
# 管理器
# 报错
# 重启
# 它不
# 这三个
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
如何在 Go 中高效缓存与分发网络视频流
Win11怎么设置默认邮件客户端 Win11修改Mail应用关联【教程】
Win10如何卸载微软拼音输入法 Win10只保留一个输入法【教程】
如何在 PHP 单元测试中正确模拟带方法的图像处理门面(Facade)
Win11怎么激活Windows10_Win11激活Win10系统方法【步骤】
Win11怎么设置鼠标宏_Win11鼠标按键自定义编程教程【详解】
Mac的访达(Finder)怎么用_Mac文件管理入门教程【详解】
Win11怎么设置任务栏图标大小_Windows11注册表TaskbarSi修改
php转exe用什么工具打包快_高效打包软件推荐【汇总】
PHP主流架构如何做单元测试_工具与流程【详解】
Win10怎么卸载鲁大师_Win10彻底卸载鲁大师方法【步骤】
C#怎么使用委托和事件 C# delegate与event编程方法
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
php本地部署支持nodejs吗_php与nodejs混合开发环境搭建教程【教程】
windows 10专注助手怎么关闭_windows 10禁用通知提醒功能方法
Win11怎么关闭触摸键盘图标_Windows11任务栏系统托盘设置
Win11文件扩展名怎么显示_Win11查看文件后缀名设置【基础】
如何将文本文件中的竖排字符串转换为横排字符串
Win11怎么开启远程桌面连接_Windows11系统属性远程设置
PHP主流架构怎么处理表单验证_规则与自定义【技巧】
php删除数据怎么清空表_truncate与delete区别及用法【汇总】
如何在JavaScript中动态拼接PHP的base_url与前端变量
php485返回数据不完整怎么办_php485数据分包重组处理方法【教程】
Win11如何设置系统语言_Win11系统语言切换教程【攻略】
Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】
Win11怎么开启窗口对齐助手_Windows11系统多任务处理设置
Python异步编程高级项目教程_asyncio协程任务管理实战
Win11怎么查看硬盘型号_Windows 11检测硬盘信息方法【技巧】
mac怎么右键_MAC鼠标右键设置与触控板手势技巧【入门】
Python数据挖掘核心算法实践_聚类分类与特征工程
如何使用正则表达式提取以编号开头、后接多个注解的逻辑分组块
MySQL 中使用 IF 和 CASE 实现查询字段的条件映射
Win11怎么设置任务栏透明_Windows11使用工具美化任务栏
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
c++ std::atomic如何保证原子性 c++ CAS操作原理【底层】
Python对象比较与排序_集合使用说明【指导】
Win11如何设置省电模式 Win11开启电池节电功能【优化】
VSC怎么在PHP中调试MySQL_数据库交互排查技巧【教程】
PythonDocker高级项目部署教程_多容器管理与CI/CD流水线
Python多线程使用规范_线程安全解析【教程】
c++ unordered_map怎么用 c++哈希表用法【教程】
如何使用Golang操作指针变量_Golang解引用与赋值实践
电脑的“网络和共享中心”去哪了_Windows 11新版网络设置指南【新手】
Laravel 查询 JSON 列:高效筛选包含数组中任意值的记录
Win11怎么更改默认打开方式_Win11关联文件格式教程【详解】
Mac自带的词典App怎么用_Mac添加和使用多语言词典【技巧】
Win11怎么关闭任务栏小图标_Windows11任务栏角溢出设置
php查询数据怎么分组_groupby分组查询配合聚合函数【技巧】
Win11怎么退出高对比度模式_Win11取消反色显示快捷键【修复】
windows如何禁用驱动程序强制签名_windows高级启动设置指南
2026-01-01
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。