laravel 10 在 vultr 的 debian 12 上可稳定运行,但必须使用 php 8.1+(推荐 8.2),并完整启用 mbstring、intl、bcmath 等扩展;缺任一扩展会导致 composer create-project 卡死或报错,且 nginx root 必须指向 public 目录、.env 中 app_key/db_database/app_url 需正确配置并清缓存。

直接上结论:Laravel 10 在 Vultr 的 Debian 12 实例上能稳定运行,但必须用 PHP 8.1+(推荐 8.2),且不能跳过 php-intl、php-bcmath 等扩展安装——缺一个,composer create-project 就会卡死或报错。
确认 PHP 版本与关键扩展是否就位
Debian 12 默认带 PHP 8.2,但不默认启用所有 Laravel 10 所需扩展。光有 php -v 显示 8.2 不够,必须手动检查:
-
php -m | grep -E 'mbstring|openssl|pdo|tokenizer|xml|ctype|json|intl|bcmath|zip|gd|curl'—— 缺哪个就装哪个 - 最常漏的是
php-intl:执行sudo apt install php-intl,否则 Composer 解析依赖时会 hang 住 - 如果用 MySQL,别忘了
php-mysql;用 SQLite 就装php-sqlite3 - 装完重启 PHP-FPM:
sudo systemctl restart php8.2-fpm
用 Composer 创建项目时绕过网络和内存陷阱
Vultr 默认网络对 GitHub 和 Packagist 偶尔不稳定,加上 Laravel 10 vendor 目录体积大,容易失败:
- 先切国内镜像:
composer config -g repo.packagist composer https://packagist.phpcomposer.com(或更稳定的https://packagist.org+ 配 DNS 为114.114.114.114) - 临时解除内存限制:
COMPOSER_MEMORY_LIMIT=-1 composer create-project laravel/laravel myapp - 若报
zlib_decode(): data error,删掉~/.composer/cache再重试 - 不要用
--prefer-dist(Vultr 上有时触发压缩包校验失败),让 Composer 走 git clone 更稳
Nginx 配置必须指向 public 目录且启用 try_files
Vultr 实例默认没配虚拟主机,直接放项目根目录会导致 .env 或 app/ 被 Web 访问,极其危险:
- 编辑配置:
sudo nano /etc/nginx/sites-available/myapp -
root必须设为项目public子目录路径,例如/var/www/myapp/public -
location /块里必须有try_files $uri $uri/ /index.php?$query_string;,否则路由全 404 - PHP 处理块中
fastcgi_pass要匹配你实际的 socket,Debian 12 默认是unix:/var/run/php/php8.2-fpm.sock - 启用后执行:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ && sudo nginx -t && sudo systemctl reload nginx
APP_KEY、DB_DATABASE、APP_URL 这三项必须手改
跑 php artisan serve 只能临时验证,真要上线必须改好 .env 里的这三处,否则后续全是隐性故障:
-
APP_KEY:必须运行php artisan key:generate生成,不能留空、不能复制旧项目值 -
DB_DATABASE:填你已创建的数据库名(不是用户名),MySQL root 默认无密码,但DB_PASSWORD=后面不能写null或留空,应为空字符串 -
APP_URL:设为你的 Vultr 公网 IP 或域名,如http://192.0.2.1或https://myapp.example.com;别用localhost,它在服务器外部不可达 - 改完记得清缓存:
php artisan config:clear && php artisan cache:clear
最容易被忽略的是权限和 SELinux 兼容性——Vultr 的 Debian 12 默认没开 SELinux,但如果你后期加了安全加固模块,storage/ 和 bootstrap/cache/ 目录得手动加 context;另外,Nginx 进程用户(通常是 www-data)必须对 storage 和 bootstrap/cache 有写权限,chmod -R 775 storage bootstrap/cache 比 777 更稳妥。











