“Ubuntu 上 PHP 配置报错”这个原因非常多,需要先看你具体的报错信息才能精确定位。不过我可以先给你一份最常见原因 + 排查方法清单,你可以对照看看是哪一种。
报错示例
Command 'php' not found
或
php: command not found
✅ 解决:
sudo apt update
sudo apt install php-cli
php -v
如果你装了多个版本(如 7.4 / 8.1 / 8.2):
sudo update-alternatives --set php /usr/bin/php8.1
现象
.php 文件✅ Apache:
sudo apt install libapache2-mod-php
sudo a2enmod php
sudo systemctl restart apache2
✅ Nginx(常见):
sudo apt install php-fpm
/etc/nginx/sites-enabled/default 中需有:
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
然后:
sudo nginx -t
sudo systemctl restart nginx
报错示例
PHP Warning: Unknown: Failed to open stream
PHP Fatal error: syntax error in php.ini
✅ 检查:
php --ini
常见错误:
;extension= 写错memory_limit 写成了 memory limit报错
Permission denied
或
failed to open stream: Permission denied
✅ 解决:
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html
报错
Class 'PDO' not found
Call to undefined function mysqli_connect()
✅ 安装扩展:
sudo apt install php-mysql php-xml php-mbstring php-curl
sudo systemctl restart apache2 # 或 nginx + php-fpm
报错
Array and string offset access syntax with curly braces is no longer supported
✅ 解决:
请依次执行:
php -v
php -m
php --ini
sudo systemctl status apache2
sudo systemctl status nginx
sudo systemctl status php8.1-fpm
如果你愿意,把下面任意一项发出来,我能直接告诉你原因:
你可以直接贴报错内容,我帮你逐行分析。