若PHP网页连接数据库失败,需依次排查:一、验证PHP是否正常解析(通过phpinfo测试);二、确认MySQL服务运行及3306端口监听;三、核对host、端口、账号密码等连接参数;四、检查用户权限及Host匹配范围;五、开启PHP错误报告并查看服务器日志。

如果您在网页中嵌入 PHP 脚本尝试连接数据库,但页面显示空白、报错或提示连接失败,则可能是由于 PHP 环境配置、数据库服务状态、连接参数错误或权限限制所致。以下是排查与修复该问题的多种方法:
一、验证 PHP 是否正常解析并执行
确保 Web 服务器(如 Apache 或 Nginx)已正确安装并启用了 PHP 模块,且 .php 文件未被当作纯文本下载或直接显示源码。
1、新建一个 test.php 文件,内容为 ,放入 Web 根目录。
2、通过浏览器访问 http://localhost/test.php(或对应域名路径)。
立即学习“PHP免费学习笔记(深入)”;
3、若页面显示 PHP 配置信息,则 PHP 解析正常;若显示源码或 500 错误,则需检查 Web 服务器 PHP 模块加载状态及文件权限。
二、确认 MySQL/MariaDB 服务正在运行
PHP 连接数据库的前提是数据库服务进程处于活动状态,且监听预期端口(默认 3306)。
1、在服务器终端执行 systemctl status mysql(Ubuntu/Debian)或 systemctl status mariadb(CentOS/RHEL)。
2、若显示 inactive,则运行 systemctl start mysql 启动服务。
3、执行 netstat -tuln | grep :3306,确认 3306 端口处于 LISTEN 状态。
三、核对数据库连接参数是否准确
PHP 中使用的主机地址、端口、用户名、密码、数据库名必须与实际数据库配置完全一致,尤其注意本地连接时 host 不应误写为 127.0.0.1(可能触发 IPv6 或 socket 差异)。
1、检查 PHP 连接代码中 host 值:若数据库与 PHP 同机,优先尝试 'localhost' 而非 '127.0.0.1'。
2、确认端口未被修改:默认为 3306,若自定义过需在 mysqli_connect() 或 PDO DSN 中显式指定 port 参数。
3、使用命令行验证凭证:mysql -u 用户名 -p -h localhost,输入密码后能进入交互界面即证明账号可用。
四、检查数据库用户权限及绑定范围
MySQL 用户默认可能仅允许从 localhost 连接,而 PHP 脚本若经由 CGI/FPM 方式运行,有时会以不同上下文调用,导致 host 匹配失败。
1、登录 MySQL 执行:SELECT User, Host FROM mysql.user; 查看目标用户的 Host 字段值。
2、若需支持本地 PHP 连接,确保存在 'username'@'localhost' 记录;若 PHP 与 DB 分离部署,需添加 'username'@'web-server-ip' 并授权。
3、执行 GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost'; FLUSH PRIVILEGES; 更新权限。
五、启用并查看 PHP 和 MySQL 错误信息
默认情况下 PHP 可能屏蔽致命错误,导致页面无输出,需主动开启错误报告以定位具体失败原因。
1、在 PHP 脚本开头加入:error_reporting(E_ALL); ini_set('display_errors', 1);
2、对于 mysqli 连接,使用 mysqli_connect_error() 获取错误描述;对于 PDO,捕获 PDOException 并输出 $e->getMessage()。
3、同时检查 Web 服务器错误日志,例如 Apache 的 /var/log/apache2/error.log 或 Nginx 的 /var/log/nginx/error.log,搜索 “PHP Fatal” 或 “mysqli” 关键词。











