在 Ubuntu 上 PHP 连不上(数据库 / 服务 / 网络)是很常见但原因很多的问题。先给你一个排查清单,你对照看看是哪一种;也可以把具体报错贴出来,我帮你精确定位。
检查:
php -m | grep -E 'mysqli|pdo_mysql'
如果没有:
sudo apt install php-mysql
sudo systemctl restart apache2 # 或 php-fpm
systemctl status mysql
没启动就:
sudo systemctl start mysql
127.0.0.1 或 localhost
localhost,MySQL 默认走 socket127.0.0.1,走 TCPPHP 示例:
new mysqli('127.0.0.1', 'user', 'pass', 'db');
SELECT user, host FROM mysql.user;
如果 host 是 localhost,但你用 TCP 连,就会失败。
解决:
CREATE USER 'user'@'%' IDENTIFIED BY 'pass';
GRANT ALL ON db.* TO 'user'@'%';
FLUSH PRIVILEGES;
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。
sudo ufw status
基本可忽略。
php -i | grep disable_functions
php -v
网页空白?看 Apache / Nginx 错误日志:
tail -f /var/log/apache2/error.log
在 PHP 文件里写:
<?php
var_dump(error_get_last());
或:
mysqli_connect_error();
把具体报错信息发我,我可以直接告诉你改哪一行。
如果你愿意,告诉我:
我可以一步到位帮你解决。