dnmp 环境安装扩展时有时无的情况

这个环境dnmp
是我一直在使用的一个开源项目, 基本上满足了日常开发的大部分需求,
但是目前使用下来,有的时候可能会根据业务需要安装其他版本的php,所以有时会重新

docker-compose down
docker-compose build php56

这样,重新启动的时候就会出现之前在 php81或者其他版本 中安装的扩展莫名丢失了,
而且扩展也不是手动进到容器里面用install-php-extensions安装的,就很奇怪。

今天在打开另一个项目时突然提示又缺扩展了, 缺了这个 :

SourceGuardian

也没多想直接去容器里面执行 install-php-extensions sourceguardian, 但是它今天也掉链子, 明明配置都加载上了 而且扩展文件也存在就是没加载上

php --ini
Additional .ini files parsed:      /usr/local/etc/php/conf.d/docker-fpm.ini,
/usr/local/etc/php/conf.d/docker-php-ext-bcmath.ini,
/usr/local/etc/php/conf.d/docker-php-ext-gd.ini,
/usr/local/etc/php/conf.d/docker-php-ext-imagick.ini,
/usr/local/etc/php/conf.d/docker-php-ext-ldap.ini,
/usr/local/etc/php/conf.d/docker-php-ext-mysqli.ini,
/usr/local/etc/php/conf.d/docker-php-ext-opcache.ini,
/usr/local/etc/php/conf.d/docker-php-ext-pdo_mysql.ini,
/usr/local/etc/php/conf.d/docker-php-ext-redis.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sodium.ini,
/usr/local/etc/php/conf.d/docker-php-ext-sourceguardian.ini, //这个就是
/usr/local/etc/php/conf.d/docker-php-ext-zip.ini

目录/usr/local/lib/php/extensions/no-debug-non-zts-20210902中sourceguardian.so也存在,但是奇怪的是它的权限和其他扩展不一样,

ls -l

chmod +x sourceguardian.so
chown root:root sourceguardian.so

改成一样了还行不行,看看错误日志吧果然

PHP Warning:  Failed loading Zend extension 'sourceguardian.so' (tried: /usr/local/lib/php/extensions/no-debug-non-zts-20210902/sourceguardian.so (Error loading shared library libudev.so.1: No such file or directory (needed by /usr/local/lib/php/extensions/no-debug-non-zts-20210902/sourceguardian.so)), /usr/local/lib/php/extensions/no-debug-non-zts-20210902/sourceguardian.so.so (Error loading shared library /usr/local/lib/php/extensions/no-debug-non-zts-20210902/sourceguardian.so.so: No such file or directory)) in Unknown 

好像是缺依赖库libudev.so, 那就整吧

apk update
apk upgrade
apk add libudev-dev
上面这个包还没有 最后用这个替代的
apk add eudev-dev

这回可以了, 那么我明明什么都没动,之前怎么就可以正常的安装,这次扩展掉了怎么缺这么多东西…, 有没有跟我一样用这个项目的 , 有出现过这种情况么

讨论数量: 5

把在容器里面执行的这些写道构建过程里 Docerfile中 不然重新构建会将运行时的设置冲掉

3周前 评论
图图 (楼主) 3周前

down掉了,相当于把容器删除了,容器内的东西自然就没有了
如果之前运行的容器不变的情况下,你可以直接维护compose.yml 文件,添加你想要的容器服务就可以了,直接docker compose build 【某个服务名】然后在docker composer up -d 【服务名】

3周前 评论

要不试试这个 github.com/tongpan11/dnmp

3周前 评论
图图 (楼主) 3周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!