2013-07-29 93 views

回答

204

尝试添加代码的wp-config.php文件:

define('FS_METHOD', 'direct'); 
+16

我一直在搜索这个答案,所以我在这里为我自己和其他人发帖: 该代码位于wp-admin/includes/file.php:get_filesystem_method。Wordpress尝试创建一个文件'wp-content/temp-write-test - '。time()。如果失败,它假定您只能使用FTP。但是这可能不是真的,如果wp-content本身不可写,但是例如wp-content/plugins是。然后,强制FS_METHOD工作。 –

+3

它的工作原理,但现在的问题是解压后的错误说:“无法创建目录”。 – Drew

+1

这对我有帮助,但仅仅是因为它暴露了更多有关失败的信息。核心问题是对正在进行更新的用户帐户拥有写入权限。对于每种类型的系统,这可以是不同的。 (注意下面的一些答案告诉你为守护进程,httpd或apache设置写入权限......)它帮助我从下面的注释中看到PHP代码片段(<?php echo(exec(“whoami”)); ?>),以便我可以告诉用户正在运行更新。在这里提出的修改似乎只是简单地抑制了FTP凭据的挑战,所以我可以看到错误消息。 – agentv

7

From the first hit on Google

WordPress的询问你的FTP凭据时它不能直接访问这些文件 。这通常是由PHP作为apache用户 (mod_php或CGI)运行引起的,而不是拥有WordPress文件的用户。

这在大多数共享托管环境中,而正常 - 文件被存储为用户,并运行Apache用户apachehttpd。这实际上是一种很好的安全预防措施,因此利用和黑客无法修改托管文件。你可以通过将所有WP文件设置为777安全来避开这种情况,但这意味着没有安全性,所以我会强烈反对这一点。只需使用FTP,这是自动建议的解决方法,有很好的理由。

+0

感谢您的解释。有没有办法将共享服务器配置为以正确的用户身份运行PHP或修复所有者或其他解决方案? –

10

在OSX,我用下面的,和它的工作:

sudo chown -R _www:_www {path to wordpress folder} 

_www是执行PHP的用户在Mac上。 (你也可能需要chmod一些文件夹,我之前做过,但没有解决它,直到我做了chown命令才工作,所以我不确定它是否可以是单独的chown命令,或chmod和chown的组合。)

1

正如Niels所述,发生这种情况是因为服务器进程用户无法写入Wordpress文件夹。

但这里有很多文章无法解释的东西。它是php进程的所有者,而不是nginx进程。如果您尝试更改nginx所有者,它不会解决此问题。

要解决此问题,请尝试运行ps aux以查看哪个用户拥有php-fpm进程。然后检查该用户是与wordpress文件夹的所有者相同的用户,还是至少可以写入该用户。如果用户无法写入,则需要更改文件夹的权限和/或所有权;或者将两个用户(服务器所有者和wordpress文件夹所有者)放在可以写入该文件夹的公共组中;或将php.ini“user”属性更改为可写入该文件夹的用户。

18

如果您使用的是Ubuntu。

sudo chown -R www-data:www-data PATH_TO_YOUR_WORDPRESS_FOLDER 
+3

-1不好的想法做到这一点,只有wp-content应该归属于'www-data'请看这里:http://codex.wordpress.org/Hardening_WordPress或在这里:http://stackoverflow.com/questions/18352682/correct-file-permissions-for-wordpress – timhc22

+0

此答案还修复了错误“安装失败:无法找到WordPress内容目录(wp-content)”。试图从仪表板安装插件时。 – WindChimes

10

“每当你使用WordPress的控制面板设置为自动安装,升级或删除插件,WordPress的必须在文件系统中文件的更改。

进行任何更改之前,WordPress的首先检查是否或者没有权限直接操纵文件系统

如果WordPress没有直接修改文件系统的必要权限,系统会要求您提供FTP凭据,以便WordPress可以尝试通过FTP完成所需操作。“

解决方案: 为了找出你的Apache实例运行哪些用户如,创建具有以下内容的测试脚本:

<?php echo(exec("whoami")); ?> 

对于我来说,这是守护进程,而不是www数据然后,通过固定的权限:

sudo chown -R daemon /path/to/your/local/www/folder 
+3

不要忘记禁用exec()或类似的敏感功能。在生产中。 – Arda

+1

更好的是使用'<?php echo(exec(“id”)); ?>'这甚至会提供超出用户ID的组数据:'uid = 5018(web27)gid = 5012(client7)groups = 5012(client7),5002(sshusers)' –

2

第一位置移动到安装文件夹(例如)

cd /Applications/XAMPP/xamppfiles/ 

现在,我们要修改您的htdocs目录:

sudo chown -R daemon htdocs 

输入根口令提示时,然后在chmod调用完成它:

sudo chmod -R g+w htdocs 
8

我改变了WordPress的所有权文件夹到www数据递归并重新启动apache。

sudo chown -R www-data:www-data <folderpath> 

它像一个魅力工作!

+0

这对大多数人来说可能是正确的答案。我认为这是我第三次创建了一个文件夹并被忘记了。 – MrMysterious2502

1

来解决这个问题最简单的方法是添加下面的FTP信息到您的wp-config.php

define('FS_METHOD', 'direct'); 
define('FTP_BASE', '/usr/home/username/public_html/my-site.example.com/wordpress/'); 
define('FTP_CONTENT_DIR', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/'); 
define('FTP_PLUGIN_DIR ', '/usr/home/username/public_html/my-site.example.com/wordpress/wp-content/plugins/'); 

FTP_BASE是“基地”的完整路径WordPress安装 FTP_CONTENT_DIR的(ABSPATH)文件夹是WordPress安装的wp-content文件夹的完整路径。 FTP_PLUGIN_DIR是WordPress安装的插件文件夹的完整路径。

+0

FTP不安全,因此我们禁用它,所以它不是一个解决方案。我们使用SFTP来代替。 –

2

我们遇到了同样的问题,作为更大问题的一部分。的

define('FS_METHOD', 'direct'); 

建议的解决方案隐藏了窗口,但随后我们仍然有与装载主题和升级等,这是涉及到权限问题然而,在我们的例子中,我们从PHP操作系统厂商mod_php的移动到固定的问题更安全的php操作系统供应商FastCGI应用程序

1

我没有在Ubuntu 14.04以下列出here和运行简单的步骤的WordPress的本地安装:

sudo chown -R www-data:www-data {path_to_your_project_directory} 

解决了我的问题与下载插件。我离开这篇文章的唯一原因是因为当我搜索我的问题时,这是第一个结果,它使我找到了解决问题的方法。

希望这对任何人都有帮助!