php - Laravelが他のデータベースサーバーへの接続に失敗する

原文 php mysql laravel pdo

私はしばらくの間Laravelを使用していますが、ほとんどが単一のデータベースサーバーで使用しています。

現在、私のクライアントは、同じネットワーク内の複数のデータベースサーバーから少なくとも5つのデータベースを取得しています。

pingを使用してsshを介してサーバー間の通信を確認できます。
mysqli_connectはデータベース接続をチェックします。

ただし、次のようにdatabase.php(mysql configs)でlaravelを使用すると、

// This setup is working fine (using localhost)
'mysql' => array(
                'driver'    => 'mysql',
                'host'      => 'localhost',
                'database'  => 'dbname',
                'username'  => 'user',
                'password'  => 'password',
                'charset'   => 'utf8',
                'collation' => 'utf8_unicode_ci',
                'prefix'    => '',
            ),


// Other DB (which is failing to connect) but i can confrim the connection using a file outside 
// the laravel app through mysqli

        'other_db_connection' => array(
            'driver'    => 'mysql',
            'host'      => '192.168.33.241',
            'database'  => 'dbname',
            'username'  => 'username',
            'password'  => 'password',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),

        'another_db_connection' => array(
            'driver'    => 'mysql',
            'host'      => '192.168.33.211',
            'database'  => 'dbname',
            'username'  => 'username',
            'password'  => 'password',
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
        ),


new PDOを使用

// This connectiion functions with no problem
$conn1 = new PDO('mysql:host=localhost;dbname=dbname;port=3306','username','password');

if($conn1) {
                echo 'connected';
            }

// But this returns an error
$conn = new PDO('mysql:host=192.168.33.241;dbname=dname;port=3306','username','password');

        if($conn) {
            echo 'connected';
        }

// Also, i have no problems using the DB:: or even the model as long as the host is the localhost


接続に失敗します。PDOとlaravelのデフォルトのDB機能は、ホストがローカルホストの場合にのみ機能します。

何らかの理由で、他のサーバーのIPを使用すると、次のようなエラーがスローされます。

SQLSTATE[HY000] [2003] Can't connect to MySQL server on '192.168.33.241' (13)
SQLSTATE[HY000] [2003] Can't connect to MySQL server on '192.168.33.211' (13)

サーバーIPまたはメインドメイン名を使用して接続しようとすると、

何か不足していますか? localhostであるローカルdbサーバーでのみ接続できるのはなぜですか
他のデータベースサーバーにはないのですか?しかし、laravelアプリケーションの外部からindex.phpファイルを使用し、mysqli_connectを使用してクエリを作成し、接続すると、問題なく接続できますか?

あなたのすべての協力に感謝します。
答え
database.php内で指定したすべての接続にアクセスできます。

$user = DB::connection('other_db_connection')


新しいPDO接続などをセットアップする必要はありません。上記のように機能します
関連記事

php - キャプチャ再読み込みが正しく機能していません

php - MySQLのPHPで連想配列を操作する際に問題が発生しました[終了]

php - Laravel / PHP-非常に奇妙なエラー-ファイル入力がnullを返す

php - これをワードプレス用にどのようにコーディングしますか?

php - PHPでの軸IPカメラのプロキシの設定

php - CodeIgniterがサーバーで機能しない

javascript - 同時にajaxを複数回呼び出す

php - PHP laravel。動的ページへのリンク

php - ebayを使用してウェブサイトでAPIを接続する

php - 関連製品のクエリカテゴリと属性