【发布时间】:2018-01-25 00:36:04
【问题描述】:
我正在尝试对使用 IonCube 加密的 PHP 应用程序进行 Docker 化。
独立于 IonCube 的应用程序运行良好,当我尝试使用精简映像(Docker、Alpine、PHP7.0)对其进行 Dockerize 化时,它唯一的失败是围绕 IonCube 安装。
采取的步骤:
- 按照显示的 IonCube 说明进行安装。
- 尝试安装后,导航到 Docker 映像中的目录以确认 COPY 已正确执行,并且使用“docker exec -it image_name /bin/sh”在映像中显示所有相关文件。
- 虽然文件按照上述命令显示,并且在检查图像后,Powershell 中显示一条消息:“加载/usr/lib/php7/modules/ioncube_loader_lin_7.0.so 失败:重新定位/usr/lib/php7/ 时出错模块/ioncube_loader_lin_7.0.so: __strtod_internal: 未找到符号”。
- 再次访问 docker 镜像“docker exec -it image_name /bin/sh”,文件显示。但它似乎无法加载 .SO 文件。
- 最初认为可能是目录权限问题,但当我将目录 chmod 更改为 777 时仍然没有运气。
过去有人遇到过这个问题吗?
Dockerfile 内容:
FROM richarvey/nginx-php-fpm:php7
COPY web /www
RUN chmod -R 777 /usr/lib/php7/modules
COPY web/ioncube/linux-64 /usr/lib/php7/modules
COPY web/ioncube/linux-64-ini /etc/php7/conf.d
WORKDIR /www
IonCube loader-wizard.php 说明:
- 下载以下适用于 Linux x86-64 的 Loaders 存档之一:
- tar.gz
- tar.bz2
- 将Loader文件放入/usr/lib/php7/modules
- 编辑文件 /etc/php7/conf.d/00_ioncube.ini 并确保在任何其他 zend_extension 行之前包含以下内容:zend_extension = /usr/lib/php7/modules/ioncube_loader_lin_7.0.so
- 重启服务器软件。
仍然在执行上述操作后,检查相应文件是否存在于 Alpine 内的相应目录中,然后,我销毁 docker 映像,构建,然后运行它,但没有 Joy。然后我还尝试重新启动 docker 映像而不是“docker rm image_name”,以防它破坏已安装的 IonCube 相关更改,但仍然没有运气。
我有点不知所措。
任何指针或指导表示赞赏。
【问题讨论】:
标签: docker nginx php-7 alpine ioncube