今天终于把wordpress搬好了,之前也架过没有出现什么问题,今天弄的时候不能自动安装、升级和卸载插件,竟然出现“执行请求操作,连接信息必须提供。”的提示,要求提供FTP的信息,在网上搜索了一下,在中文中没找到任何信息,难道大家都没有遇到这种情况?
不甘心,找英文的吧,现在语言包里找到对应的英文“To perform the requested action, connection information is required.”,好赖找到几篇文章,大致搞明白了一点。
执行行请求操作,连接信息必需提供
这个界面只会出现在系统把apache进程不是以用户身份来运行的主机上
目的只有一个,安全
问题有好几个,这样子用apache创建的文件就不属于用户,那么没有写权限的话,用户就没法删除,只能用apache来删除
遇到这个问题的同学可以看一下这篇
如何删除ftp或ssh无法删除的文件
The following code is from the get_filesystem_method() method in the wp-admin/includes/file.php file:
if( function_exists(‘getmyuid’) && function_exists(‘fileowner’) ){
$temp_file = wp_tempnam();
if ( getmyuid() == fileowner($temp_file) )
$method = ‘direct’;
unlink($temp_file);
}
wordpress会创建一个临时文件看看owner是不是和当前运行的php比如plugin-install.php一样
如果不一样,那么会出现如图的使用ftp来搞定
执行请求操作,连接信息必须提供。
产生这个问题的原因是检查文件的所有者,看是否有对这个文件的操作权限,识别的代码在
wp-admin/includes/file.php
if( function_exists(‘getmyuid’) && function_exists(‘fileowner’) ){
$temp_file = wp_tempnam();
if ( getmyuid() == fileowner($temp_file) )
$method = ‘direct’;
unlink($temp_file);
}
解决的方法:
1.老老实实输入FTP的相关信息,既然WordPress要了,肯定有他的用处,这方法我没试,遇到的同学可以先试试这个方法。
此方法据说还可以只修修改wp-config.php文件,加入以下代码。host、user、pass就是你的FTP地址、帐户、密码。
// ** FTP SETTINGS FOR AUTO-UPDATE ** //
define('FTP_HOST', 'localhost');
define('FTP_USER', 'ftp帐号');
define('FTP_PASS', 'ftp密码');
2.修改文件的所有权
修改文件所有权之前首先要知道应该把所有权给谁,老外提供了两个命令,在进程中查看执行服务器程序的用户是谁
ps aux | grep -i http 或者
ps aux | grep -i apache
我还发现了另外一个方法,就是上传文件,我这里只是插件不能卸载和升级,但是上传文件功能还是可用的,不仅能上传还能删除。随便上传一个文件,查看一下上传成功的这个所有者是谁。假设所有者是robb,在SSH中执行(wordpress为你的WP安装目录)
chown -R robb wordpress
至此搞定。国内空间基本上没有SSH权限可能就没有办法用第二种方式解决了。鉴于后台上传文件时所有者不会出错,大家可以绕道解决这个问题,例如先上传一个Extplorer之类的文件管理器,然后上传WordPress的压缩包,直接在线解压,比用FTP上传快多了。
搬家后第一帖,希望能给其他遇到这个问题的用户有所帮助。