更新解压中...无法创建目录。WordPress

14
当我安装nextgen-gallery插件时,出现了这个错误信息。
Downloading update from https://downloads.wordpress.org/plugin/nextgen-gallery.zip…

Unpacking the update…

Could not create directory.

我该如何解决这个问题?


WordPress是否具有对插件目录的写入权限?可以用相同的方式安装其他插件吗? - Rayhan Muktader
nginx,php-fpm,用户和组以及文件和文件夹权限的答案在这里中回答。 - Hassan Gilak
11个回答

24

这是一个权限问题。确保目录可被Apache写入。插件被解压到wp-content/plugins目录中,因此我建议首先尝试将其作为Apache用户写入该目录:

sudo -u apache touch /path/to/wp-content/plugins/test.txt

根据问题设置相应的权限。您可以在此处阅读有关权限的信息:https://www.pluralsight.com/blog/it-ops/linux-file-permissions

您可以在此处了解有关WordPress正确的文件权限方案的信息:https://wordpress.org/support/article/changing-file-permissions/


1
第一个链接似乎已经过期了。目前你可以在这里查看:https://www.pluralsight.com/blog/it-ops/linux-file-permissions - fanny

21

@skrilled和@knutole的回答很好,但我发现当我尝试在插件文件夹上修复问题时,一切都很正常,该回答对我没有起作用。

如果其他人也遇到这个问题,请尝试查看upgrades文件夹。据我所见,该文件夹用作存储WP升级或插件更新运行时的临时文件夹。

如果你只收到了一个声称“无法创建目录”的消息,并且没有指定路径,则实际上可能是在谈论upgrades文件夹。


3
直到我给wp-content/upgradewp-content/plugins赋予了777权限,我才解决了这个错误。但是,如何将其改回更安全的权限(而不是777!)并仍然使其正常工作? - Ryan
1
我找到了答案。我把这两个文件夹的权限改回了755,然后进行了递归的 chown 操作,像这样:http://wordpress.stackexchange.com/a/23569/51462 现在我可以保持它们为755。 - Ryan
@damienoneill2001很好地解决了这个问题。所以,对我有用的解决方案是:chmod -R g+w wp-content/upgrade,但在运行此命令之前,请确保**upgrade**文件夹具有apache、www-data或者Web服务器用户的组。 - hswner
我尝试创建一个名为“upgrade”的文件夹并将其设置为“chmod 777”,但我仍然遇到了这个问题。我内心的怀疑者认为,WordPress的开发人员故意让这个过程变得困难,以便人们放弃并为他们的托管安装订阅付费。我的意思是,它甚至没有告诉你该死的文件夹的名称! - Simon Morgan
嗨@SimonMorgan。我能建议的就是确保你将upgrade文件夹放在正确的位置,即wp-content内部,尝试通过Filezilla设置权限并清除浏览器缓存以确保更改已生效。此外,我从未听说过WordPress运行的付费“托管安装订阅”服务,因此肯定不是他们故意制造困难。 - damienoneill2001
显示剩余7条评论

7
如果您已经正确配置了它,那么与您的WordPress网站相关联的http服务器应属于www-data组。这是正确配置的方式。
尝试使用members www-dataps aux | grep www-data来确认。在后一个命令中,您应该在最后一列看到nginxapache
在这种情况下,您只需要将该组设置为目录即可。
sudo chgrp -R www-data <your_wordpress_root_dir>/

然后在该目录中添加完整的组权限。
sudo chmod -R g+rwx <your_wordpress_root_dir>/

现在它完美地工作了 :)

3

对于nginx用户
如果您已安装php-fpm,则需要告诉它其用户和组为nginx。/etc/php-fpm.d/www.conf。找到默认分配给apache的用户并将其更改为nginx。同样,也要更改组。然后运行以下命令:

sudo service php-fpm restart


还要在您的WordPress目录中执行以下命令

sudo chown nginx:nginx * -R 
sudo usermod -a -G nginx username

将用户名更改为当前用户名。

但是您必须应用适当的权限。 在您的WordPress目录中运行以下命令

sudo find . -type f -exec chmod 664 {} + 
sudo find . -type d -exec chmod 775 {} +

chmod比标准的644/755更宽松。此外,可能需要添加chmod g+s,以便新文件/文件夹将继承所有者gid,因为您只将nginx添加为用户的辅助组。 - jeffmcneill
进行如此大规模的 chown 操作,您可能需要将自己添加到 nginx 组中,这样才能替换主题文件,不是吗? - reneruiz
这是关于PHP用户与Nginx用户交互以提供和响应有关创建文件等事项的内容。 - Hassan Gilak
如何操作?我想我的 apache 默认用户是 www-data。在 /etc/php-fpm.d/www.conf 中找到默认分配给 apache 的用户,并将其更改为 nginx。同样的方式更改组。 - SherylHohman

1
如果您使用vsftpd作为FTP服务器并启用了被动连接,则需要将pasv_promiscuous=YES添加到/etc/vsftpd/vsftpd.conf中。

0

我正在使用Nginx和WordPress。我在wp-content中删除了升级文件夹,然后再次从WordPress GUI运行了升级。我注意到创建升级文件夹的Linux用户是www-data。然后我执行了{sudo chmod -R www-data:www-data .} 从GUI再次运行升级,它成功了。

可能需要更改大多数文件夹的权限,以便www-data无法修改它们,但我明天会解决这个问题。


0

我曾经遇到过类似的问题。当时我试图在迁移后的WP安装中更新插件,但是我无法完成操作,因为所有权限都与旧服务器完全相同。在我的情况下,我开始发现很多功能都无法正常工作。我无法安装/删除插件或主题,上传媒体也会出错。后来我通过一些研究找到了解决方法。

如果您仍然遇到此问题,并且更改权限未能解决问题,请尝试以下操作:

进入您的托管控制面板,找到您的托管设置,无论您在哪里可以编辑脚本设置。在Plesk(如我的示例中),这将位于“网站和域”下。单击底部的域名。在下一个屏幕上,其中写着“PHP支持(运行为…”,将下拉菜单从“Apache模块”更改为“FastCGI应用程序”。现在应该已经解决了所有问题!

FastCGI


0
通过ftp重置权限对我也没有任何影响。没有SSH可用,所以我必须登录控制面板(在我的情况下是directadmin),文件管理器中我可以“重置所有者”以“文件所有权重置”/wp-contents目录。

0
一个权限问题,请确保 Apache(www-data)具有写入权限。

0

以上都很好,但我认为你忽略了最简单的问题。你的网站使用的空间超过了分配的空间,因此它出现了故障。WordPress会生成更多的文件,而这些文件都是在使用中的。如果你的网站接近极限,可能会发生一些简单的过夜问题,你什么也没做。晚上睡觉时一切正常,第二天早上网站就崩溃了。

我拥有自己的网站,所以我进入Hostmonster或Hostgator的经销商部分(我在两个托管平台上都有网站),重新分配更多的空间,通常问题就解决了。首先尝试这个方法,或者在处理权限之前先查看一下。如果你更改了权限并出现了问题,可能是权限的问题,否则,请首先检查这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接