PHPデータオブジェクトでこの問題が発生しました。
データベースに接続できません。最初に私のPHPスクリプトがあります:
<?php
$serverName = "127.0.0.1";
$port = "3306";
$dbName = "callitTime";
$userName = "root";
$password = "superstrongPassword";
try {
$db = new PDO("mysql:host=$serverName;dbname=$dbName;port=$port;",
$userName, $password);
} catch (PDOException $pdoE) {
echo 'An Error occurred: ' . $pdoE->getMessage();
}
?>
私は使っている:
PHP 7.1.16
Nginx 1.13.12-1
MySQL 8.0.11-1debian9
すべてDockerコンテナとして。
phpinfo()は、PDOドライバーが次のようにロードされることを示しています。
PDOドライバー:
sqlite
mysql
ドライバーバージョン:
mysqlnd 5.0.12-dev
SQLiteライブラリ3.15.1
エラーが発生します:
An Error occurred: SQLSTATE[HY000] [2002] Connection refused
同じパスワードとユーザー名でPhpstorm経由で同じデータベースに接続できます。
これはPHP構成に関連する問題ではないようです。
このエラーConnection refused
は、私の観点からは、phpコンテナからmysqlコンテナへの接続を確立できないことを示しています。
PHPコンテナがデータベースへの接続を確立できるように、3306ポートをWebサーバーコンテナに公開する必要があります。すでにコンテナをブリッジしている場合は、ループバック127.0.0.1ではなく、コンテナのIPアドレスを使用する必要があります。
両方のコンテナを接続する方法と、phpからmysqlコンテナに接続する方法の詳細については、この回答を参照してください:https:
//stackoverflow.com/a/43128428/1118905
問題を絞り込むために、PHPコンテナ内からNetcat経由で特定のDBホストへの接続を確立してみることができます。
たとえば、次のコマンドを使用して接続の確立を試みることができます。
- 接続をテストするコンテナーに入ります。
docker exec -it <name_of_container> bash
- netcat経由で接続を開くためのテスト(すべての準備が整っていない場合は、fe apt経由でインストールします)
nc -vz 127.0.0.1:3306
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加