1

PHP(php-fpm)を既存のNginx Ubuntu 10.04サーバーに追加していますが、pdo_mysqlを機能させることができません。別の場所でMySQLサーバーに接続しようとしていますが、グーグルで見つけた答えはすべて、MySQLがローカルサーバーで機能していないことに関するものであるため、続行する方法がわかりません。

mysqldをインストールしていないので、それが必要かどうか、またはこれを回避する方法があるかどうかわかりません。また、サーバーにmysqlユーザーがいるため、mysqld.sockを作成できないのではないかと思います。

エラー:

SQLSTATE[HY000] [2002] Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) Fatal error: Call to a member function query() on a non-object

私のPHP接続コード:

$this->PDO = new PDO('mysql:host=' . $this->config->getValue('db_host') .
                             ';dbname=' . $this->config->getValue('db_name'),
                             $this->config->getValue('db_user'),
                             $this->config->getValue('db_pass'));

それが失敗する私のクエリ行:

$PDOStatement = $this->PDO->query($query);

助けてくれてありがとう。

4

3 に答える 3

1

あなたがチェックすべきいくつかのこと

  • mysql-clientをインストールしましたか?リモートマシンに接続している場合。ボックスでmysqlを実行する必要はありませんが、クライアントは引き続き必要だと思います。
  • ホスト値が正しいことを確認してください。ダブル&トリプルチェック

  • 最後に、次のコマンドを使用して、コマンドラインを使用して手動で接続してみてください。

$ mysql -u <INSERT_USER_HERE> -p -h <INSERT_IP_OF_REMOTE_MACHINE_HERE> <INSERT_DB_NAME_HERE>

それが機能しない場合。正確なエラーメッセージが表示されます。

于 2011-07-16T22:08:12.847 に答える
0

サーバーがローカルのMySQLインスタンスに接続しようとしています。データベースが別のリモートサーバー上にあるdb_host場合は、構成ファイルの値がMySQLサーバーの正しいホスト名を指していることを確認してください。

インストールする必要はありませんがmysqld、MySQLクライアントライブラリは必要です。

于 2011-07-16T22:03:53.177 に答える
0

$this->config->getValue('db_host')それが正しい値を返していると確信していますか?あなたが説明している振る舞いは、空またはnull値を返すように聞こえます。

于 2011-07-16T23:28:40.770 に答える