You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

运行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_timeoutinteractive_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_timeoutpdo_mysql.default_socket_timeout86400
  • 重启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

火山引擎 最新活动