【发布时间】:2012-11-14 16:22:27
【问题描述】:
我刚刚开始在 Laravel 中开发一个新站点,但在连接到 MYSQL(版本 5.5.25a)数据库时遇到了问题。 mysql 服务器在同一个本地网络上,但在与 Web 服务器(OSX 服务器)不同的机器上。长期以来,这种设置在 Codeigniter、YII、直接 PHP 等中对我来说效果很好。
我已经使用我的数据库凭据设置了 Laravel 的 /config/database.php,但是只要它在使用 Laravel 的 PDO 数据库类建立数据库连接的页面上,站点就会超时。它给了我可怕的 chrome 中的 Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data. 错误。
如果我输入的凭据不正确(密码/用户名/数据库名错误),Laravel 会给我一个真实的 MYSQL 错误消息SQLSTATE[28000] [1045] Access denied for user...,所以它似乎可以与服务器正常通信。
如果我使用 mysqli 进行快速而肮脏的数据库调用并使用 chromePHP 记录结果,一切似乎都运行良好,并且它从数据库返回正确的行数,没有超时,没有问题。
$mysqli = new mysqli('192.168.1.178', 'username', 'password', 'dbname');
if ($mysqli->connect_error){
die ("Connect error: " . $mysqli->connect_error );
}
if ($result = $mysqli->query("SELECT username FROM user LIMIT 10")) {
ChromePhp::log($result->num_rows);
/* free result set */
$result->close();
}
更新
我检查了日志,没有从 mysql 得到任何信息,但是 apache 日志在超时时显示以下错误:
child pid 60418 exit signal Segmentation fault (11)
我还注意到 phpinfo() 显示 PDO 客户端 API 版本设置为 mysqlnd 5.0.7-dev - 091210 - $Revision: 300533 ,我想知道客户端版本和 MYSQL 服务器版本之间的这种不匹配是否会导致问题?
当我尝试将 PDO 与 mysql 一起使用时,为什么 php/mysql 会超时?
【问题讨论】:
-
似乎我不是唯一一个遇到这个问题的人,它可能特定于我正在使用的苹果设置。 discussions.apple.com/thread/…
-
phpinfo()在web服务器上显示PDO Client API版本设置为mysqlnd 5.0.7-dev - 091210 - $Revision: 300533,不知道会不会有问题?