gentoo上安装laravel 11可行但需手动满足全部依赖:必须启用php≥8.2及mbstring、openssl、pdo等11个扩展(通过use标志配置),安装composer 3.x(禁用emerge默认的2.x),项目创建须加--no-interaction,进目录后立即php artisan key:generate,并正确设置storage与bootstrap/cache属主及权限。

直接在 Gentoo 上用 composer create-project 装 Laravel 11 是可行的,但必须手动满足所有 PHP 和系统级依赖,否则会卡在扩展缺失、Composer 版本不兼容或权限报错上——Gentoo 默认不预装任何 PHP 扩展,也不带 Composer,更不会自动启用 mbstring 或 tokenizer 这类 Laravel 11 强制要求的模块。
确认 PHP 8.2+ 并启用全部必需扩展
Laravel 11 要求 PHP ≥ 8.2.0,且以下扩展必须启用并编译进 PHP: mbstring、openssl、pdo、tokenizer、xml、ctype、json、curl、zip。Gentoo 的 PHP 包(dev-lang/php)默认只启用了极小集,需显式 USE 标志控制。
- 检查当前 PHP 版本:
php -v,若非 8.2.x 或更高,先eselect php set cli php8.2 - 编辑
/etc/portage/package.use,为dev-lang/php添加完整 USE 标志:dev-lang/php apache2 bcmath berkdb bzip2 calendar cli ctype curl dba dom exif fileinfo filter ftp gd gdbm gmp hash iconv imap intl json ldap mbstring mysqli mysqlnd openssl pcntl pcre pdo phar posix readline session sharedmem simplexml soap sockets sodium sqlite3 ssl sysvipc tidy tokenizer truetype xml xmlreader xmlrpc xmlwriter xsl zip zlib - 重新编译:
emerge --ask --verbose dev-lang/php - 验证扩展是否加载:
php -m | grep -E "(mbstring|tokenizer|pdo|xml)",缺一个就重装
安装 Composer 3.x(不是 2.x)
Gentoo 官方仓库的 dev-php/composer 在 2026 年仍默认提供 Composer 2.x,而 Laravel 11 的 composer.json 显式依赖 Composer 3 的插件解析机制,用 2.5.x 会直接报 Your requirements could not be resolved,且不提示真实原因。
- 别用
emerge dev-php/composer—— 它装的是 2.x - 用官方一键脚本装 Composer 3:
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && php composer-setup.php --install-dir=/usr/local/bin --filename=composer - 验证:
composer --version输出必须是3.x,不是2.5.x - 若提示
curl扩展未启用,回上一步补全 PHP USE 标志并重装
运行 create-project 时必须加 --no-interaction
在 Gentoo 终端(尤其无图形环境或 SSH 登录)下,composer create-project laravel/laravel myapp 若不加 --no-interaction,会卡在无法渲染的交互提示(如 “Install Breeze?”),导致 .env 为空、APP_KEY 仍是默认占位符 base64: 开头字符串——后续所有加密、Session、CSRF 都失效,但错误不明显。
- 正确命令:
composer create-project laravel/laravel myapp --no-interaction --prefer-dist - 进目录后立刻执行:
cd myapp && php artisan key:generate - 检查
.env是否已生成且APP_KEY是 32 字符随机字符串,不是base64:开头 - 若
key:generate报Class 'Mbstring' not found,说明 PHP 扩展没真正启用,回第一步查php -m
权限与 storage 目录写入问题
Gentoo 默认文件系统权限严格,storage 和 bootstrap/cache 目录若属主不是 Web 服务用户(如 nginx 或 www-data),php artisan serve 可能启动成功,但访问页面时静默失败(如日志不写、缓存不生成、视图编译报错)。
- 设属主(以 nginx 为例):
chown -R nginx:nginx storage bootstrap/cache - 确保目录可写:
chmod -R 775 storage bootstrap/cache - 若用
php artisan serve本地测试,属主应为当前用户,但生产部署必须切到 Web 用户 - 注意:Gentoo 的
nginxebuild 默认不创建www-data用户,而是用nginx用户,别配错
最易被忽略的是 PHP 扩展的 USE 标志和 Composer 版本——Gentoo 不像 Ubuntu 那样 apt install 就完事,每个扩展都得手动开关;而 Composer 3 的缺失会导致整个依赖解析失败,但错误信息完全不提版本问题,只说“无法解析需求”。这两点卡住的人最多。











