# 在云托管中如何安装PHP的SG11扩展

SourceGuardian安全组件是PHP中较为重要和安全级别较高的安全组件,目前大部分php官方镜像未安装或启用SG11,所以如果你的项目需要此组件,则可以参照此文档

# 一、配置Dockerfile

在你原有的Dockerfile中,FROM下面一行添加下述命令

RUN PHP_VERSION=$(php -v | head -n1 | cut -d' ' -f2 | cut -d. -f1-2) \
    && mkdir -p /tmp/sourceguardian \
    && cd /tmp/sourceguardian \
    && curl -Os https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz \
    && tar xzf loaders.linux-x86_64.tar.gz \
    && cp ixed.${PHP_VERSION}.lin "$(php -i | grep '^extension_dir =' | cut -d' ' -f3)/sourceguardian.so" \
    && echo "extension=sourceguardian.so" > /usr/local/etc/php/conf.d/15-sourceguardian.ini \
    && rm -rf /tmp/sourceguardian

注意要放在COPY你的代码之前,避免每次构建重新剥离层。

# 二、验证是否开启

<?php
echo phpinfo();

当访问时查看是否存在如下信息,如果有则证明添加成功

# 三、完整示例

新建一个文件夹,文件夹下分别建立如下文件

  1. Dockerfile
FROM php:7.3-apache

RUN PHP_VERSION=$(php -v | head -n1 | cut -d' ' -f2 | cut -d. -f1-2) \
    && mkdir -p /tmp/sourceguardian \
    && cd /tmp/sourceguardian \
    && curl -Os https://www.sourceguardian.com/loaders/download/loaders.linux-x86_64.tar.gz \
    && tar xzf loaders.linux-x86_64.tar.gz \
    && cp ixed.${PHP_VERSION}.lin "$(php -i | grep '^extension_dir =' | cut -d' ' -f3)/sourceguardian.so" \
    && echo "extension=sourceguardian.so" > /usr/local/etc/php/conf.d/15-sourceguardian.ini \
    && rm -rf /tmp/sourceguardian

COPY index.php /var/www/html/

RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"

CMD ["apachectl", "-DFOREGROUND"]
  1. index.php
<?php
echo phpinfo();

将文件夹部署到微信云托管中即可,部署过程可以参考此文档