在Google Cloud Build部署Laravel应用时无法安装PHP Sodium扩展
解决GCP App Engine Flex部署Laravel时sodium扩展安装失败问题
问题分析
部署时提示sodium * is not available on your system,原因是App Engine Flex的PHP7.3基础镜像未预装sodium扩展,而你的composer依赖明确要求该扩展。
解决方案(推荐:升级PHP版本)
PHP 7.4及以上版本中,sodium是内置核心扩展,无需额外安装。调整以下配置即可:
1. 修改composer.json的PHP版本要求
更新require中的PHP版本范围:
{ "require": { "php": "^7.4|^8.0", // 其他依赖保持不变 } }
2. 在app.yml中指定PHP版本
在runtime_config下添加php_version配置:
runtime: php env: flex runtime_config: document_root: web php_version: 7.4 # 可选择8.0/8.1,需与Laravel 8.75兼容 skip_files: - .env # 其他自动扩容、资源、环境变量配置保持不变
3. 重新部署
执行原Cloud Build命令即可,此时构建过程会自动使用PHP7.4+环境,sodium扩展已内置,不会再报错。
备选方案:自定义Dockerfile(强制使用PHP7.3时)
若因依赖限制必须保留PHP7.3,需通过自定义Dockerfile手动安装sodium扩展:
1. 项目根目录创建Dockerfile
FROM gcr.io/google-appengine/php:7.3 # 安装sodium扩展依赖并编译安装 RUN apt-get update && apt-get install -y libsodium-dev \ && docker-php-ext-install sodium # 复制项目文件到容器 COPY . /app # 设置工作目录 WORKDIR /app # 安装生产环境Composer依赖 RUN composer install --no-dev --optimize-autoloader
2. 修改app.yml使用自定义运行时
将runtime改为custom:
runtime: custom env: flex # 自动扩容、资源、环境变量配置保持不变
3. 重新部署
执行原Cloud Build命令,构建过程会基于自定义Dockerfile创建镜像,包含sodium扩展。
内容的提问来源于stack exchange,提问作者marunk
相关产品推荐
相关产品推荐

