Laravel 9 可在银河麒麟V10运行,但需严格匹配PHP 8.0+及php8.1-mbstring、php8.1-pdo等带版本前缀的扩展包,并规避kysec权限拦截与国密SSL导致的Composer安装失败。

Laravel 9 可以在银河麒麟V10上运行,但需注意其底层依赖(PHP 8.0+、OpenSSL、cURL、PDO等)与国产系统默认环境存在兼容性断层——不是不能跑,而是默认装完就报 Class 'PDO' not found 或 mbstring extension is missing 这类错误。
确认系统架构和软件源是否匹配
银河麒麟V10 x86_64 版本默认使用 kylin 自研源,但部分 PHP 扩展包(如 php-mbstring、php-xml、php-pdo)在源中被拆分为独立子包,且命名不完全对标 CentOS/Ubuntu 风格:
- 执行
cat /etc/os-release | grep VERSION确认是V10 SP1/SP2/SP3,SP3 对 PHP 8.1 支持更稳 - 检查源配置:
ls /etc/apt/sources.list.d/,确保启用了kylin-v10-main和kylin-v10-updates,禁用第三方非签名源 - 避免混用 Ubuntu 的
ppa:ondrej/php或阿里云镜像源,会导致libssl版本冲突(麒麟默认用 OpenSSL 1.1.1w,而某些 PPA 强制拉入 3.x)
安装 PHP 及必要扩展的正确顺序
麒麟V10默认仓库中的 php 包是 8.0 或 8.1(取决于 SP 版本),但扩展包名带 php8.1- 前缀,容易漏装:
- 先更新并安装核心:
sudo apt update && sudo apt install php8.1-cli php8.1-fpm php8.1-curl - 必须显式安装以下扩展(Laravel 9 硬依赖):
php8.1-mbstring php8.1-xml php8.1-zip php8.1-pdo php8.1-sqlite3 php8.1-bcmath - 验证:运行
php -m | grep -E "(mbstring|pdo|xml)",缺任何一个模块都会导致composer create-project laravel/laravel卡在 autoload 生成阶段 - 特别注意:
php8.1-opcache建议装上,否则php artisan serve启动后响应明显变慢
Composer 安装与 Laravel 9 初始化避坑点
麒麟V10默认未预装 composer,且国内网络环境下直接用官方脚本易失败:
- 不要用
curl -sS https://getcomposer.org/installer | php—— 会因 TLS 握手失败卡住(麒麟默认启用国密 SSL 策略) - 改用麒麟适配版:
sudo apt install composer(该包已内置国内镜像源和国密兼容补丁) - 初始化项目时加
--prefer-dist参数:composer create-project laravel/laravel example-app --prefer-dist,避免从 GitHub 拉源码触发 git 协议限制 - 若提示
file_put_contents(/tmp/composer...): failed to open stream,说明/tmp被noexec挂载,临时修复:sudo mount -o remount,exec /tmp(仅测试环境)
Web 服务启动与权限问题
php artisan serve 在麒麟V10上能跑,但默认绑定 127.0.0.1:8000,外网访问不了;若切 Nginx,则要注意 SELinux 替代机制 kysec 的拦截:
- 开发调试建议加
--host=0.0.0.0:php artisan serve --host=0.0.0.0 --port=8000 - 若用 Nginx,确保
www-data用户对storage/和bootstrap/cache/有写权限:sudo chown -R www-data:www-data storage bootstrap/cache - 麒麟V10 SP3 默认启用
kysec(基于 LSM 的安全模块),若页面空白且 Nginx error log 提示Permission denied,需临时放行:sudo kysec set httpd_can_network_connect on -
.env文件务必设为600权限,麒麟对敏感文件权限校验比常规 Linux 更严格
实际部署时最常卡在扩展缺失和 kysec 权限拦截这两处,其他步骤和标准 Ubuntu/Debian 流程一致。别跳过 php -m 验证,也别信“装了 php 就等于装全了扩展”——麒麟的包拆分逻辑太细,漏一个就起不来。


















