今天在本地搭建 Typecho ,方便在笔记本上调试,然后就遇到了 Typecho 的经典错误:对不起,无法连接数据库,请先检查数据库配置再继续进行安装。

这难不倒我嘛,以我的经验来说,无非是忘记手动创建数据库了,然后我就登陆 phpmyadmin ,手动创建了一个名叫 typecho 的数据库,回来重新创建,发现还是同样地错误。没办法,就想办法调试吧。首先修改 install.php 中第 520 行附近为:

try {
    $installDb->query('SELECT 1=1');
} catch (Typecho_Db_Adapter_Exception $e) {
    $success = false;
    echo '<p class="message error">'
    . $e
    . _t('对不起,无法连接数据库,请先检查数据库配置再继续进行安装') . '</p>';
} catch (Typecho_Db_Exception $e) {
    $success = false;
    echo '<p class="message error">'
    . _t('安装程序捕捉到以下错误: " %s ". 程序被终止, 请检查您的配置信息.',$e->getMessage()) . '</p>';
}

这样子就能看到错误了。然后发现,居然看不懂 T-T。猜测是数据库连接有问题,于是我在主目录下创建 index.php ,内容是:

<?php phpinfo(); ?>

认认真真核对了必要的包,然后又跑到 /Library/WebServer/Documents 检查文件读写权限,最后还进入 phpmyadmin 检查了一遍 root 用户的权限,居然全都没有问题。接下来在 typecho 目录下创建了一个 sqltest.php ,内容是:

<?php
$con = mysql_connect("localhost","****","*****");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

echo "!!!";

mysql_close($con);
?>

返回的错误是 No such file or directory ,然而我并不知道这是为什么。此时我已经黔驴技穷,上 Google 查资料,然后问题居然是因为找不到 mysql.sock 文件,如果系统下有 /tmp/mysql.sock ,但是没有 /var/mysql/mysql.sock ,那么执行以下代码:

cd /var 
sudo mkdir mysql
cd mysql
sudo ln -s /tmp/mysql.sock mysql.sock

相反的,执行下面代码:

cd /tmp
sudo ln -s /var/mysql/mysql.sock mysql.sock
转载保留版权:http://haipz.com/blog/i/6520 - 海胖博客