一劳永逸的解决wordpress后台更新等操作需要ftp账户信息的问题
遇到这问题好几次了, 好像都是在用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的博客
顶顶,希望多多给大家分享些经验啊
WP 原来还有这么好啊
反正需要填写ftp密码的机会并不多,为了安全,我觉得还是忍了比较好。