2020年1月

generated/code/Magento cannot be deleted - Directory not empty

现象:运行 bin/magento module:disable Mageplaza_Smtp 命令尝试禁用Magento2模块时,提示出错:

The directory "/var/www/html/generated/code/Magento" cannot be deleted Warning!rmdir(/var/www/html/generated/code/Magento): Directory not empty

尝试:检查发现 /generated 目录及子目录都有文件所有者写权限,删除失败可能是Magento2的定时任务在删除目录的过程中又生成新文件了。可以尝试临时停止Magento2的定时任务或Web进程后再次操作。

批量禁用或启用magento2的模块

需求:不知道哪个模块导致magento2的web进程占用CPU高。

尝试:可以通过禁用、启用模块来尝试诊断。如以下命令会禁用所有非Magento名字头的模块:

php bin/magento module:status | grep -v Magento | grep -v List | grep -v None | grep -v -e '^$'| xargs php bin/magento module:disable

参考:

三个能为magento2配置使用外部smtp发信的模块 - magento-2-smtp - gmailsmtpapp - SMTP Extension

需求:magento2程序所在的主机商主动过滤了TCP 25端口的连接,无法通过本机发出电子邮件。

尝试:可以在尝试在magento2里安装模块,通过外部(如QQ、gmail等邮局)SMTP发信。提供该功能的,有:

  1. magento-2-smtp - https://github.com/mageplaza/magento-2-smtp
  2. gmailsmtpapp - https://github.com/magepal/magento2-gmail-smtp-app
  3. SMTP Extension - https://www.magetop.com/magento-2-smtp-extension.html
  4. enhanced-smtp - https://github.com/kiwicommerce/magento2-enhanced-smtp

个人觉得在magento2.3上安装了第1、第2和第3,前两种安装成功,但可能与当前的magento2模板有冲突,php或httpd进程的CPU占用率很高。第3个安装不成功,第4个没有安装。最后是通过为本机postfix配置使用smtp relay发出电子邮件。