今天在本机调试wordpress,在进行删除插件操作的时候出现了以下画面:

用了很久的wordpress了,第一次遇见这个问题。

经过百度之后,发现最多的解决方法是在wp-config.php中加入以下代码:

[cc lang=’php’]
define(‘FTP_HOST’, ‘ftp.yoursite.com’);
define(‘FTP_USER’, ‘Your_FTP_Username’);
define(‘FTP_PASS’, ‘Your_FTP_password’);
[/cc]

但这种方法是治标不治本的,出现这个问题的原因是wordpress无法对文件进行操作。

通过google,发现了一篇文章:Why WordPress Asks for Connection Info

这篇文章详细的解释了出现了这个问的原因和解决办法,想看原版的可以直接点以上连接。我也做一下大致的翻译。

什么操作会引发这种问题?

每当你使用WordPress控制面板进行自动的安装、升级或者删除插件时,WordPress必须对文件系统中的文件进行更改。

在进行任意更改之前,WordPress会首先检查一下他是否有权限对系统进行操作。

如果WordPress没有权限对文件系统进行直接操作,他会让你输入FTP的信息,从而通过FTP连接来完成你所要求的操作。

我们怎么解决这个问题?

为了解决这个问题,你需要确定文件系统的所有者与执行apache(或者其他web服务器程序)的用户是相同的。

许多主机公司在设定你的账户的时候使用用户给定的统一的用户名,即用来执行apache的用户也是你的用户,而且所有的文件的所有者也是同一个账户。在这种情况下,你应该不会遇到上述的那些问题。

如果你的主机托管公司使用系统用户来运行apache,而你的文件的所有者你是自己的账户,那么没办法了,你只好来使用FTP的途径来进行文件的修改了。你可以使用文章上面所提供的方法来避免每次进行操作的时候都要重新输入一次你的FTP账户信息,减少工作量。

如果你的主机公司给了你root权限,或者你是在你自己的开发机上进行调试,你可以修改文件系统的设置来允许WordPress直接访问你的文件系统。

首先你需要了解执行你web服务器的用户名称是什么。有两种方法,第一种方法是在terminal中输入
[cc]ps -aux[/cc]
找到你http服务的进程(一般为apache2, httpd之类的),查看对应的用户名。比如我的测试机是debian6系统,使用apache2,则所找的用户名为www-data。另外一种方法则是新建一个php页面,内容为
[cc lang=’php’][/cc]
输出的结果即为所求的用户名。
然后在terminal中对你的wordpress所在的文件夹进行chown设置,如:
[cc]# chown -R www-data /var/www/wordpress/[/cc]
即可。
如果还是有问题,可以尝试对wordpress进行chmod操作,把权限设置成777再试试:
[cc]# chmod -R 777 /var/www/wordpress/[/cc]