症状
Apache+PHP+MySQLという構成のWebアプリケーションにて, MySQLへのコネクション要求時に
SQLSTATE[HY000] [2002] Permission denied
というエラーが発生し, 接続に失敗する.
しかし, コマンドラインのmysqlクライアント等からの接続には成功する.
環境
$ cat /etc/redhat-release
CentOS release 6.8 (Final)
$ httpd -v
Server version: Apache/2.2.15 (Unix)
Server built: Jul 18 2016 15:24:00
$ php -v
PHP 5.6.28 (cli) (built: Nov 9 2016 07:23:55)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
MySQLはAmazonのRDSを使用
原因
SELinuxが有効になっており, httpd経由のネットワーク接続が無効になっていた
対処法
この機能は「httpd_can_network_connect」という変数で制御しているようなので,
この値を変更する
$ getsebool httpd_can_network_connect
httpd_can_network_connect --> off
$
$ sudo setsebool -P httpd_can_network_connect 1
$
$ getsebool httpd_can_network_connect
httpd_can_network_connect --> on
$
これでおそらく接続できるようになります
参考