次のスクリプト (cxn-test.php) を使用してデータベースに接続しようとしています
ターミナルで試してみると
<ブロック引用>php cxn-test.php //成功
しかし、ローカルホストで試してみると、次のエラーが発生します:
<ブロック引用>curl -s http://localhost/cxn-test.php
エラー: MySQL に接続できません。 デバッグ エラー番号: 2002 デバッグ エラー メッセージ: アクセス許可が拒否されました
これは奇妙な問題です。ローカルホストでは動作しませんが、コマンドラインでは正常に動作します。
SELinux を実行する新しい CentOS 7 ボックスを入手した後、同じ問題に遭遇しました。コマンドライン経由でリモートの MySQL データベースサーバーに接続できますが、Drupal (およびテスト PHP スクリプト) は接続できません。
この問題は、最終的には SELinux セキュリティ ポリシーによって引き起こされます。
デフォルトでは、ポリシーhttpd_can_network_connect_dbは無効になっています (つまり、Web サーバーはリモート データベースに接続できません)。
次のコマンドで確認します。
getsebool -a | grep httpd
httpd_can_network_connect_db がオフになっている場合は、次のコマンドを使用して有効にしてください:
リーリー(-P フラグは変更を永続的なものにするため、設定は再起動後も有効になります。)