Laravel 11在百度云BCC上运行需四步:升级PHP≥8.2并启用mbstring等扩展、安装Composer 3.x、创建项目时加--no-interaction参数、手动复制.env并执行php artisan key:generate,缺一则首页白屏或500错误。

Laravel 11 在百度云 BCC(Baidu Cloud Compute)Linux 实例上能跑起来,但默认环境几乎肯定不满足要求——PHP 版本低、关键扩展缺失、Composer 版本错、.env 和 APP_KEY 没生成,四者任一出问题,php artisan serve 启动后访问首页也会白屏或报 500 错误。
PHP 8.2+ 必须手动装,系统自带 PHP 不可用
百度云 BCC 默认 CentOS 7/8 或 Ubuntu 20.04 的系统源里 PHP 最高只到 7.4 或 8.0,而 Laravel 11 强制要求 PHP >= 8.2.0。运行 php -v 输出低于 8.2 就不用往下试了。
- Ubuntu 22.04+ 用户:用
sudo apt install php8.2-cli php8.2-mbstring php8.2-xml php8.2-pdo php8.2-curl php8.2-tokenizer php8.2-bcmath php8.2-zip php8.2-intl php8.2-opcache安装完整扩展 - CentOS 7/8 用户:禁用系统源,启用 Remi 仓库:
sudo yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm,再执行sudo dnf module enable php:remi-8.2,最后sudo dnf install php-cli php-mbstring php-xml php-pdo php-curl php-tokenizer php-bcmath php-zip php-intl php-opcache - 装完必须验证:
php -m | grep -E "(mbstring|openssl|pdo|tokenizer|xml|intl)"每项都得有输出;php --ini查看加载的php.ini路径,确认extension=mbstring.so等没被注释
Composer 3.x 是硬门槛,2.x 会卡死在依赖解析
百度云实例默认可能装的是 Composer 2.5.x 或更老版本,composer create-project laravel/laravel 会卡在 Resolving dependencies... 或直接报错 Your requirements could not be resolved——这不是网络慢,是 Laravel 11 的 composer.json 明确依赖 Composer 3 的插件机制。
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 卸载旧版:
sudo rm /usr/bin/composer(或查which composer后删) - 下载并安装 Composer 3:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && sudo php composer-setup.php --install-dir=/usr/local/bin --filename=composer - 验证:
composer --version输出必须是3.x,不是2.x - 国内用户建议同步配镜像:
composer config -g repo.packagist composer https://mirrors.cloud.tencent.com/composer/
--no-interaction 不是可选参数,漏掉就等于没初始化
在 BCC 实例里用 SSH 执行 composer create-project laravel/laravel blog,终端不会弹出交互提示(因为无 TTY),但项目看似创建成功,实际 .env 是空的、APP_KEY 是占位符 base64: 开头的字符串——后续所有加密、Session、CSRF 都会失败,页面打开就是 500 或空白。
- 正确命令只有一条:
composer create-project laravel/laravel blog --no-interaction - 进目录立刻补两步:
cd blog && cp .env.example .env && php artisan key:generate - 别跳过
cp .env.example .env:Laravel 11 初始化逻辑已剥离该步骤,不手动复制,key:generate会写入一个不存在的文件 - 检查结果:
grep APP_KEY .env应输出类似APP_KEY=base64:xxx...的真实密钥
Nginx 配置 public 目录时,root 路径不能错,且必须开 PHP-FPM
BCC 实例默认没装 Nginx 或 PHP-FPM,装完后若 root 指向项目根目录(而非 public),或没启用 fastcgi_pass,访问只会看到目录列表或下载 index.php 源码。
- 确认 PHP-FPM 已运行:
sudo systemctl status php8.2-fpm(Ubuntu)或sudo systemctl status php-fpm(CentOS) - Nginx server 块中
root必须是项目public子目录绝对路径,例如:root /var/www/blog/public; - PHP 处理块必须包含
fastcgi_pass,Ubuntu 示例:fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;;CentOS 示例:fastcgi_pass 127.0.0.1:9000;(注意端口或 socket 路径匹配 PHP-FPM 配置) - 别忘了
try_files $uri $uri/ /index.php?$query_string;,否则路由全 404
最易被忽略的是:BCC 实例安全组默认只放行 80/443,但本地调试常用 php artisan serve 的 8000 端口——这个端口在 BCC 控制台里必须手动添加入方向规则,否则浏览器打不开;另外 MySQL 的 DB_PORT=3306 若开启,同样要加安全组放行,且数据库用户需授权从 % 或具体 BCC 内网 IP 连接。

















