首頁 > 资料存档 > 一劳永逸的解决wordpress后台更新等操作需要ftp账户信息的问题

一劳永逸的解决wordpress后台更新等操作需要ftp账户信息的问题

2011年6月11日 發表評論 閱讀評論

遇到这问题好几次了, 好像都是在用VPS安装新站点或者迁移站点会遇到这中问题, 之前总是网上一搜, 随便copy点代码过来能用就行. 这次去分析了下原因, 算是明白透了. 通过wp-admin/includes/file.php文件代码中的两个函数 request_filesystem_credentials 以及 get_filesystem_method , 会看到的当执行php脚本文件的用户和php脚本所有这用户不一样的时候, 在wordpress后台进行wordpress内核更新, 增删插件等操作的时候就会要求你输入ftp信息. 这是wordpress 2.5开始的版本增加的安全机制. 这里提供两种解决方案.

一, 通用性方案, 需要霸王硬上弓, 在wp-config.php里加入下面代码来强制wordpress采用”direct write”的方式:

add_filter( ‘filesystem_method’, create_function( ‘$a’, ‘return “direct”;’ ) );
 define( ‘FS_CHMOD_DIR’, 0755 );
 define( ‘FS_CHMOD_FILE’, 0755 );

如果wordpress版本为2.8+的, 可以用下面更简单的代码:

define(“FS_METHOD”, “direct”);
 define(“FS_CHMOD_DIR”, 0777);
 define(“FS_CHMOD_FILE”, 0777);

这个方案适合非VPS用户, 不过虚拟主机用户理论上很少会很少, 因为服务商一般都会帮你设置好的.

这种方案的缺点就是你需要将wordpress需要有写操作的目录和文件的权限必须设置成777(通常情况下是wp-content/plugins, wp-content/upgrade, wp-content/themes,一些cache目录以及它们下面的文件), 降低了站点的安全性.

二, VPS用户专属方案:

如果你是VPS用户, 恭喜你, 因为你可以掌控一切.

将你的站点根目录所有者改为运行php脚本的用户.  比如运行apache服务器的用户名通常是www-data. 那么将你的站点根目录所有者改为www-data即可, 命令如下:

chown -R www-data sitepath

如果不知道服务器运行用户, 请输入下面的命令查看进程所有者信息(比如fastcgi等进程):

ps ef

另外nginx配置文件nginx.conf中里的也可以设置user.

这种情况下由于你的脚本执行用户和脚本用户一样了(大部分情况下就是你的整个站点目录的用户), 那么也就不需要将插件,主题等目录设置成777这样危险的权限了.

原创文章,转载请注明: 转载自kchx的博客

本文链接地址: 一劳永逸的解决wordpress后台更新等操作需要ftp账户信息的问题

Categories: 资料存档 Tags:
  1. 2011年7月7日07:45 | #1

    顶顶,希望多多给大家分享些经验啊

  2. 2011年7月18日16:29 | #2

    WP 原来还有这么好啊

  3. 2011年8月27日18:48 | #3

    反正需要填写ftp密码的机会并不多,为了安全,我觉得还是忍了比较好。

  1. 目前尚無任何 trackbacks 和 pingbacks。