在 Debian 上搭建 LNMP(Linux + Nginx + MySQL/MariaDB + PHP)环境时,新手和运维常会遇到一些典型问题。下面按组件分类总结常见错误、原因和解决办法。
现象
Job for nginx.service failed.
原因
解决
sudo netstat -tunlp | grep :80
sudo apt remove apache2
sudo systemctl restart nginx
原因
解决
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
并确保有:
index index.php index.html;
原因
location 配置错误try_files解决
location / {
try_files $uri $uri/ /index.php?$args;
}
原因
php-fpmfastcgi 配置缺失解决
sudo apt install php-fpm
Nginx 中需有:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php-fpm.sock;
}
原因
解决
systemctl status php*-fpm
确认:
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
现象
Class 'PDO' not found
解决
sudo apt install php-mysql php-curl php-gd php-mbstring
原因
unix_socket解决
sudo mysql -u root
或修改认证方式:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';
原因
localhost 而非 127.0.0.1)php-mysql原因
/var/lib/mysql 权限错误df -h
chown -R mysql:mysql /var/lib/mysql
解决
chown -R www-data:www-data 站点目录
检查
ufw allow 80,443/tcp
云服务器还需放行安全组。
| 问题 | 说明 |
|---|---|
| PHP 版本不一致 | Nginx 用 php8.2,实际装 php7.4 |
| 配置文件未软链 | sites-enabled 没生效 |
| 改配置未 reload | 需 nginx -s reload |
| 时间不对 | timedatectl set-timezone Asia/Shanghai |
如果你愿意,可以告诉我:
我可以直接帮你定位并给针对性配置。