wordpress在3.7版本开始支持自动升级。不够这也带来了一个常见的问题,当wordpress在升级过程中可能超时,导致网站一直处于维护模式(maintenance mode)且不能访问网站的文章。即出现“Briefly unavailable for scheduled maintenance. Check back in a minute"(正在执行例行维护,请一分钟后回来”) 。
我就是在升级插件的时候出现这个问题的。这是人生第一次见到这个问题
为什么这个维护时候会出现这个错误呢?
维护模式页面在技术上并不算是个错误。它是一个通知页面,在更新的过程中,wordpress的下载所需的更新文件到你的服务器,把它提取出来,并安装新的文件。所以在这个时间段,wordpress会把维护模式的网页提醒放出来“Briefly unavailable for scheduled maintenance. Check back in a minute"(正在执行例行维护,请一分钟后回来”)。
如果更新过程一切顺利,这个提醒页面只会出现几秒。但是对于响应慢或者内存低的服务器来说,更新脚本可能会超时或者被中断。当更新超时或中断后,wordpress 就会一直处于维护模式,同时总是显示维护页面。
如何解决WordPress “Briefly unavailable for scheduled maintenance. Check back in a minute”的问题呢?
很简单,在wordpress的根目录下,你可以找到一个叫 .maintenance 的文件,但是这个文件是隐藏的。找到这个文件后,删除它,你的网站就能正常访问了。
shell下删除 .maintenance 。进入wordpress的根目录(wordpress的安装目录)
#ls -a
就可以看到有 .maintenance 文件
然后删除它:
#rm -rf .maintenance
再次打开网站,可以正常访问了。
FTP下你就设置ftp软件显示隐藏文件夹,然后手动删除就可以了
如何自定义维护模式的提醒页面?
避免出现默认的维护模式提醒的最简单的方法就是将访问者重定向到一个临时的维护页面。在升级前,将你的网站设置为维护模式,让用户暂时不能访问。
当然,如果你不想手动设置网站进入维护模式,你可以创建一个维护页面,而无需使用插件(如果懒,可以使用 Maintenance Mode plugin 或者 WP Maintenance Mode 插件)。简单的创建一个叫 maintenance.php 的文件,将下面的代码粘贴进去。
代码如下 | 复制代码 |
<?php $protocol = $_SERVER["SERVER_PROTOCOL"]; if ( 'HTTP/1.1' != $protocol && 'HTTP/1.0' != $protocol ) $protocol = 'HTTP/1.0'; header( "$protocol 503 Service Unavailable", true, 503 ); header( 'Content-Type: text/html; charset=utf-8' ); ?> <html xmlns="http://www.w3.org/1999/xhtml"> <body> <h1>We are updating the site, please check back in 30 minutes.</h1> </body> </html> <?php die(); ?> |
将这个文件上传到 wordpress的 wp-content 目录中。现在无论你什么时候升级网站,这个页面都会在维护模式下显示。你也可以增加css来美化下页面。
英文原文
网上看到的另外一个方法:
如果还是不行,或者你想让它以后可以显示 .maintenance ,那就打开 /wp-admin/includes/class-wp-filesystem-direct.php
将下面代码
代码如下 | 复制代码 |
function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { // safe mode fails with a trailing slash under certain PHP versions. $path = untrailingslashit($path); if ( empty($path) ) return false; if ( ! $chmod ) $chmod = FS_CHMOD_DIR; if ( ! @mkdir($path) ) return false; $this->chmod($path, $chmod); if ( $chown ) $this->chown($path, $chown); if ( $chgrp ) $this->chgrp($path, $chgrp); return true; } 改为: function mkdir($path, $chmod = false, $chown = false, $chgrp = false) { // safe mode fails with a trailing slash under certain PHP versions. if ( ! $chmod ) $chmod = $this->permission; if(ini_get('safe_mode') && substr($path, -1) == '/') { $path = substr($path, 0, -1); } if ( ! @mkdir($path) ) return false; $this->chmod($path, $chmod); if ( $chown ) $this->chown($path, $chown); if ( $chgrp ) $this->chgrp($path, $chgrp); return true; } |
然后刷新FTP目录,是不是看到.maintenance了,删除它吧!