解决安全模式下BackWPup的服务器错误问题

BackWPup是一个令人爱不释手的WordPress备份插件,它能自动定期将数据库、文件备份到Dropbox、SugarSync、Amazon S3、Google Storage... 为你的网站提供一个“时光机器”。

BackWPup的正常使用可以参考我以前的一篇文章,BackWPup——WordPress自动备份插件 设置使用教程,下面讲一下在安全模式开启的情况下的一些问题及我的解决方法。

问题分析

由于Apache的安全模式对于文件的读写限制相当严格,可能导致WEB用户不能访问系统的临时目录(通常为/tmp)、不能创建777权限的文件夹等问题。而BackWPup使用WEB方式来创建777权限的文件夹,并且要读写系统临时目录,这两项操作都是安全模式禁止的,这就导致BackWPup任务设置好后点击run会报错。

错误总结

通过查看BackWPup运行的错误信息总结出安全模式下的BackWPup的错误原因:

1、不能读写服务器的TMP目录;
2、 不能创建777权限的文件夹(BackWPup的源码中默认创建的是777权限的文件夹,在文件权限严格的Apache设置中是不允许的)。

解决方案

既然安全模式下BackWPup不能读写服务器系统的临时目录,那么我们可以建立一个目录来代替系统临时目录,然后告诉BackWPup使用这个目录作为临时目录。

开始吧^^

  • STEP 1:登陆FTP,并在服务器上建立一个临时目录,将目录权限设为777。为了安全起见,最好在目录加上一个.,如下图所示:

tmp dir

  • STEP 2:打开BackWPup安装目录下的job目录下的job_start.php,将第18行的临时目录设为刚才建立的临时目录的绝对路径,你可以使用探针或phpinfo获取这个路径。假设为:
$backwpup_static['TEMPDIR']='/users/shuyz/www/.coretmp/';  

到此第一个问题就解决了,将job_start.php重新上传,临时目录的错误应该消失了,只剩下目录权限的问题了。安全模式下一般是允许WEB用户创建755的文件夹的,这个文件夹对于WEB用户是可写的,我们只要让BackWPup创建755的目录就可以了。

  • STEP 3:打开job_start.php,将第20行的777改成755:
if (!mkdir(rtrim($backwpup_static['TEMPDIR'],'/'),0755,true)) {  
    trigger_error(printf(__('Can not create temp folder: %s','backwpup'),$backwpup_static['TEMPDIR']),E_USER_ERROR);  
    return false;  
}     

重新上传job_start.php,运行正常:

job OK

关键字:BackWPup

本文链接:树叶的BLOG >> 解决安全模式下BackWPup的服务器错误问题

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。

上一篇 : 禁止WordPress自动裁剪图片 下一篇 : 禁止某些搜索机器人和特定IP用户访问网站