温馨提示×

ubuntu php为何连不上

小樊
32
2026-10-10 07:00:02
栏目: 编程语言

在 Ubuntu 上 PHP 连不上(数据库 / 服务 / 网络)是很常见但原因很多的问题。先给你一个排查清单,你对照看看是哪一种;也可以把具体报错贴出来,我帮你精确定位。


一、最常见:PHP 连不上 MySQL

1️⃣ PHP 缺少 MySQL 扩展

检查:

php -m | grep -E 'mysqli|pdo_mysql'

如果没有:

sudo apt install php-mysql
sudo systemctl restart apache2   # 或 php-fpm

2️⃣ MySQL 没启动

systemctl status mysql

没启动就:

sudo systemctl start mysql

3️⃣ 连接地址错误(本地 vs 远程)

  • 本地一定要用:
127.0.0.1 或 localhost
  • 如果用 localhost,MySQL 默认走 socket
  • 如果用 127.0.0.1,走 TCP

PHP 示例:

new mysqli('127.0.0.1', 'user', 'pass', 'db');

4️⃣ MySQL 用户不允许连接

SELECT user, host FROM mysql.user;

如果 host 是 localhost,但你用 TCP 连,就会失败。

解决:

CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
GRANT ALL ON db.* TO 'user'@'%';
FLUSH PRIVILEGES;

5️⃣ MySQL 只监听 socket

sudo netstat -tlnp | grep mysql

如果只有:

/var/run/mysqld/mysqld.sock

说明没开 TCP。

改 /etc/mysql/mysql.conf.d/mysqld.cnf:

bind-address = 0.0.0.0

重启 MySQL。


二、PHP 连不上外部服务(API / Redis / 其他)

1️⃣ 防火墙

sudo ufw status

2️⃣ SELinux(Ubuntu 一般不默认开)

基本可忽略。

3️⃣ PHP 禁用了函数

php -i | grep disable_functions

三、PHP 本身的问题

1️⃣ PHP 没运行

php -v

网页空白?看 Apache / Nginx 错误日志:

tail -f /var/log/apache2/error.log

四、最快定位方法(强烈推荐)

在 PHP 文件里写:

<?php
var_dump(error_get_last());

或:

mysqli_connect_error();

把具体报错信息发我,我可以直接告诉你改哪一行。


如果你愿意,告诉我:

  1. PHP 连的是什么(MySQL / Redis / API?)
  2. 报错原文
  3. Ubuntu 版本 + PHP 版本

我可以一步到位帮你解决。

0 踩