只是想知道如果MySql数据库不可用而不是显示所有错误,opencart中是否有一种简单的方法可以显示一个页面说网站已关闭?
目前我的主机在MySQL服务器上遇到问题,当我访问我的网站时出现了一堆错误:
警告:mysql_connect()[function.mysql-connect]:无法通过xxxxxxxxx / public_html / system / database /中的套接字'/var/lib/mysql/mysql.sock'(2)连接到本地MySQL服务器第6行的mysql.php
注意:错误:无法在第7行的/home/flamingl/public_html/system/database/mysql.php中使用xxxxxxxxxx @ localhost创建数据库链接
答案 0 :(得分:0)
在OpenCart中,这并不是一个很好的方法。那就是说,这是肮脏的方式:
在根目录中创建一个maintenance.php
,其中包含以下内容(如果数据库连接失败,将加载它):
<?php
// Tell any crawlers visiting the site that it's currently unavailable
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 300');//300 seconds
?>
<html><body>
<h1>Sorry, the website is currently unavailable</h1>
...
...
</body></html>
将__construct
中的/system/database/mysql.php
方法修改为:
public function __construct($hostname, $username, $password, $database) {
if (!$this->link = @mysql_connect($hostname, $username, $password)) {
exit(include(DIR_SYSTEM . '../maintenance.php'));
}
if (!mysql_select_db($database, $this->link)) {
exit(include(DIR_SYSTEM . '../maintenance.php'));
}
mysql_query("SET NAMES 'utf8'", $this->link);
mysql_query("SET CHARACTER SET utf8", $this->link);
mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $this->link);
mysql_query("SET SQL_MODE = ''", $this->link);
}