laravel 11 在 digitalocean debian 11 上安装失败的根本原因是 php 版本低于 8.2 或必需扩展缺失;需添加 ondřej surý 源安装 php 8.2+ 及 mbstring、xml 等扩展,并升级 composer 至 2.5+。

composer create-project laravel/laravel 在 DigitalOcean Debian 11 上失败,根本原因几乎总是 PHP 版本或扩展缺失,而不是网络、权限或 Composer 本身的问题。
Debian 11 默认自带 PHP 7.4 —— 而 Laravel 11 强制要求 PHP >= 8.2。你执行命令时看到的错误,比如:
require laravel/framework (>=11.0.0): found laravel/framework[v11.0.0] but it requires php ^8.2 which does not match your installed version.- 或直接卡在
Loading composer repositories with package information后无响应(其实是 PHP 扩展没装全,Composer 初始化失败)
这类报错背后是环境契约断裂:Laravel 11 不会降级兼容,它只认 PHP 8.2+ 的语法和底层行为。
php -v 显示 7.4 或 8.1?必须升级到 8.2+
Debian 官方源不提供 PHP 8.2+,得换源或手动安装:
- 不要用
apt install php—— 这只会装 7.4 - 正确做法是添加 Ondřej Surý 的 PHP PPA(对 Debian 11 兼容):
sudo apt update sudo apt install -y ca-certificates apt-transport-https sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg echo "deb https://packages.sury.org/php/ bullseye main" | sudo tee /etc/apt/sources.list.d/php.list sudo apt update
然后装完整套:
sudo apt install -y php8.2 php8.2-cli php8.2-mbstring php8.2-xml php8.2-bcmath php8.2-opcache php8.2-curl php8.2-zip php8.2-fpm php8.2-pgsql php8.2-mysql
验证:php -v 必须输出 PHP 8.2.x,且 php -m | grep -E "(mbstring|xml|bcmath)" 要有对应模块。
composer create-project 卡住或报错“no matching package found”
这通常不是网络问题(DigitalOcean 国际线路稳定),而是:
-
composer自身版本太老(composer --version小于 2.5)→ 升级:curl -sS @#@#@#@#@#@#@#@#@#@0 | php -- --install-dir=/usr/local/bin --filename=composer - 当前用户没有写入目标目录权限 → 别用
sudo composer create-project,而应确保目标路径可写(如/var/www/myapp),并用普通用户运行 -
~/.composer缓存损坏 → 清掉:rm -rf ~/.composer/cache
注意:Laravel 11 的 composer.json 声明了严格依赖,任何扩展缺失都会导致解析失败,不是“装完再报错”,而是“根本走不到安装那步”。
Nginx + PHP-FPM 启动后页面空白或 500 错误
Laravel 11 默认启用 opcache.preload 和更严格的错误报告,但 Debian 11 的 php8.2-fpm 默认配置里:
-
opcache.enable=1是开的,但opcache.preload路径未设 → 注释掉或配对opcache.preload=/var/www/myapp/bootstrap/cache/preload.php -
memory_limit默认是 128M → Laravel 11 的 Artisan 命令和队列常需 256M,改/etc/php/8.2/fpm/php.ini中此项 -
upload_max_filesize和post_max_size若涉及文件上传,建议调至64M
重启服务:sudo systemctl restart php8.2-fpm nginx
关键点在于:DigitalOcean Debian 11 是干净但“过时”的基线系统,它不预装 Laravel 所需的现代 PHP 生态。所谓“失败”,95% 是卡在 PHP 版本和扩展这一层,而非部署逻辑本身。别急着查 Nginx 配置或 .env 文件,先确认 php -v 和 php -m 输出是否真正满足 Laravel 11 的硬性门槛。











