Chroot环境中Magento2命令无法运行的问题求助
解决Chroot环境下Magento2命令执行的依赖与Notice问题
我之前在Chroot环境部署Magento2时也碰到过几乎一模一样的问题,给你分两步来解决这些报错:
1. 解决libresolv.so.2缺失的问题
Chroot环境是完全隔离的,宿主系统的系统库不会自动被共享,所以你需要把PHP依赖的系统库从宿主复制到Chroot的对应路径里,而且要注意匹配架构(比如x86_64还是arm):
先在宿主系统里找到
libresolv.so.2的准确位置:find / -name libresolv.so.2 -type f假设输出是
/lib/x86_64-linux-gnu/libresolv.so.2,把它复制到Chroot的相同目录下:cp /lib/x86_64-linux-gnu/libresolv.so.2 /path/to/your/chroot/lib/x86_64-linux-gnu/这里要提醒你:PHP运行依赖的系统库不止这一个,你可以用
ldd $(which php)在宿主系统查看PHP所有依赖的库,把Chroot环境里缺失的都逐一复制过去,避免后续再出现类似的库缺失报错。
2. 解决Notice: date...的时区相关报错
这个Notice一般是Chroot环境里时区配置不完整或者PHP时区设置不正确导致的,按以下步骤修复:
- 同步时区数据库文件:把宿主系统的时区数据库复制到Chroot环境,因为Chroot默认没有这个目录:
cp -r /usr/share/zoneinfo /path/to/your/chroot/usr/share/ - 设置系统时区:在Chroot环境内执行以下命令,设置你需要的时区(比如
Asia/Shanghai,根据你的实际需求调整):echo "Asia/Shanghai" > /etc/timezone ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime - 修正PHP时区配置:找到Chroot环境内PHP的配置文件路径(用
php --ini查看),打开php.ini,找到date.timezone项,修改为对应的时区:date.timezone = "Asia/Shanghai"
额外注意事项
除了上面的问题,你还要确认Chroot环境里已经安装并启用了Magento2需要的所有PHP扩展,比如intl、gd、mysqli、soap这些,Magento对扩展依赖很严格,缺失的话也会引发各种运行错误。
内容的提问来源于stack exchange,提问作者john deo
相关产品推荐
相关产品推荐

