运行Magento2 catalog:images:resize命令报错,求解决方案(Magento2.3.0+PHP7.1)
解决Magento 2.3.0执行
catalog:images:resize时的MySQL连接错误 嘿,我之前处理过类似的问题,这个错误本质上是MySQL连接超时导致的——毕竟图片resize命令要处理大量文件,运行时间长,超过了MySQL默认的连接存活时间。结合你的环境(Magento 2.3.0 + PHP7.1),给你几个靠谱的解决办法:
1. 调整MySQL的连接超时设置
这是最直接的解决方式,修改MySQL配置文件(my.cnf/my.ini):
- 找到或添加
wait_timeout和interactive_timeout参数,把值设大一点,比如86400(也就是24小时,足够命令跑完了) - 改完后重启MySQL服务,让配置生效
2. 给命令加超时兜底参数
如果不想动MySQL全局配置,可以在执行命令时直接指定PHP的超时时间:
php -d max_execution_time=86400 bin/magento catalog:images:resize
另外,也可以分批次处理图片,比如先单独处理报错里的那个SKU,看看是不是单张图片的问题:
bin/magento catalog:images:resize --sku=12033
3. 检查PHP的MySQL扩展超时
PHP的MySQL相关扩展也有自己的超时设置,需要同步调整:
- 打开
php.ini,修改mysqlnd.net_read_timeout和pdo_mysql.default_socket_timeout为86400 - 重启PHP-FPM或者Apache服务,让配置生效
4. 排查是否有损坏的图片
有时候损坏的图片会让命令卡住,进而触发连接超时。你可以先检查报错里的/1/2/12033_1.jpg:
- 确认这个文件是否存在,能不能正常打开
- 如果文件损坏,先替换或删除它,再重新执行命令
- 顺便清理一下Magento缓存:
bin/magento cache:clean
5. 考虑升级Magento版本(可选)
Magento 2.3.0确实有点老了,后续的2.3.x稳定版本修复了不少数据库连接和图片处理的bug。如果你的业务允许,升级到2.3.7-p4这类维护版本,能从根源上减少这类问题的发生。
内容的提问来源于stack exchange,提问作者mhenkel




