如何在未用--with-sodium编译的PHP 8.2 Docker镜像中启用ext-sodium?
解决GitLab CI中drupalci/php-8.2-apache镜像启用sodium扩展的问题
你当前仅安装了底层依赖libsodium-dev,但PHP的sodium扩展需要单独安装对应版本的包,或确保扩展已在PHP配置中启用。以下是具体解决步骤:
方案1:通过包管理器安装PHP sodium扩展
drupalci的镜像基于Debian/Ubuntu体系,直接安装对应PHP版本的sodium扩展包即可:
修改.gitlab-ci.yml的before_script部分:
before_script: - apt-get update - apt-get install -y --no-install-recommends php8.2-sodium - service apache2 restart
可添加验证命令确认扩展是否成功启用:
before_script: - apt-get update - apt-get install -y --no-install-recommends php8.2-sodium - service apache2 restart - php -m | grep sodium # 输出"sodium"则说明扩展已加载
方案2:手动启用已存在的扩展(镜像已编译但未启用)
如果镜像中已包含sodium扩展但未开启,可修改PHP配置文件启用:
- 先检查扩展是否存在:
php -i | grep -i sodium
若输出包含sodium相关信息但未标注enabled,执行以下步骤:
- 在
before_script中添加启用配置:
before_script: - apt-get update - apt-get install -y --no-install-recommends libsodium-dev - echo "extension=sodium.so" >> /etc/php/8.2/apache2/php.ini # 路径需根据镜像实际PHP配置调整 - service apache2 restart
方案3:源码编译安装扩展(针对源码编译的PHP环境)
若上述方案无效,说明镜像中的PHP是源码编译且未加入sodium支持,可通过phpize编译安装:
before_script: - apt-get update - apt-get install -y --no-install-recommends libsodium-dev php8.2-dev build-essential - cd /tmp - wget https://www.php.net/distributions/php-8.2.xx.tar.gz # 替换为镜像实际使用的PHP精确版本 - tar xzf php-8.2.xx.tar.gz - cd php-8.2.xx/ext/sodium - phpize - ./configure --with-sodium - make && make install - echo "extension=sodium.so" >> /etc/php/8.2/apache2/php.ini - service apache2 restart
注意:需通过
php -v确认镜像中PHP的精确版本,替换命令中的版本号。
内容的提问来源于stack exchange,提问作者Patrick Kenny
相关产品推荐
相关产品推荐

