如何修复 docker wpcli Warning: Failed to create directory "/var/www/html/wp-content/upgrade/..."

问题:

当尝试使用 wordpress:cli wpcli docker 镜像更新插件或类似操作时,例如使用命令

docker_wpcli_update.sh
docker-compose exec wpcli wp plugin update google-sitemap-generator

你会看到类似这样的错误消息

wpcli_warning.txt
Warning: Failed to create directory. "/var/www/html/wp-content/upgrade/google-sitemap-generator.4.1.16"
+--------------------------+-------------+-------------+--------+
| name                     | old_version | new_version | status |
+--------------------------+-------------+-------------+--------+
| google-sitemap-generator | 4.1.13      | 4.1.16      | Error  |
+--------------------------+-------------+-------------+--------+
Error: No plugins updated (1 failed).

解决方案

此错误发生是因为 wordpress 镜像(不带 :cli!)基于 Debian,而 wordpress:cli 镜像基于 Alpine Linux。Debian 使用 UID 33 作为 www-data 用户,而 Alpine Linux 使用 83。所以要修复权限问题,你需要强制 cli 镜像使用 33

这在 wordpress docker 页面 上有文档记录。

docker_wpcli_update.sh
docker-compose exec -e HOME=/tmp --user 33:33 wpcli wp plugin update google-sitemap-generator

Check out similar posts by category: Docker, Wordpress