0

我刚刚开始在 Laravel 的一个新站点上工作,但在连接到 MYSQL(版本 5.5.25a)数据库时遇到了问题。mysql 服务器在同一个本地网络上,但在与 Web 服务器(OSX 服务器)不同的机器上。长期以来,这种设置在 Codeigniter、YII、直接 PHP 等中对我来说运行良好。

我已经使用我的数据库凭据设置了 Laravel /config/database.php,但是只要它在使用 Laravel 的 PDO 数据库类建立数据库连接的页面上,该站点就会超时。它给了我可怕Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.的 chrome 错误。

如果我输入的凭据不正确(密码/用户名/dbname 错误),Laravel 会给我一个真实的 MYSQL 错误消息SQLSTATE[28000] [1045] Access denied for user...,所以它似乎可以很好地与服务器通信。

如果我使用mysqlichromePHP 进行快速而肮脏的数据库调用并记录结果,一切似乎工作正常,并且它从数据库返回正确的行数,没有超时,没有问题。

$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 会超时?

4

2 回答 2

1

您有 2 个环境 CLI 和浏览器。两者都应该与您的 ip 或“localhost”一起使用,但根据我的经验,一个环境在 DB 配置中与您的 IP 一起使用,而另一种环境在 DB 配置中与“localhost”一起使用。

于 2012-11-27T05:06:59.240 回答
1

我在试用 Laravel 4 beta 时遇到了这个错误的问题。我会Segmentation fault: 11从命令行运行迁移时看到。

事实证明,我的问题是安装了MAMP的副作用。php MAMP的版本只提供在浏览器中运行。开箱即用,OS X 带有它自己的 php 版本。php这是您在命令行中使用时 OS X 将运行的版本。

一个快速的解决方法是将 MAMP php 目录添加到您的 .profile 或 .bash_profile 文件中。这里有一个更好的指南来说明如何做到这一点

于 2013-02-18T19:45:55.033 回答