質問: お世話になります。 あるSymfony入門書のコードを実践してみているのですが、selinuxをenforcingにするとmysqlでレコードを登録できずに行き詰まっていますので、お力を貸していただけないでしょうか? エラーメッセージは、以下の通りです。 An exception occured in driver: SQLSTATE[HY000] [2002] Permission denied 環境は、以下の通りです。 CentOS7 php7 MariaDB Symfony3.04 ちなみに・・・ selinux をPermissive にすると レコードの登録は可能です。 また、以前、同じサーバで入門サイト参考にして作成したものは、レコードの登録は可能です。 こちらは selinuxをenforcing にしても登録可能です。 以上のことから、今、実践している分の selinux の設定が間違えているのかと思っているのですが、良く分かりません。 symfony のエラー部分を抜粋すると CRITICAL - Uncaught PHP Exception Doctrine\DBAL\Exception\ConnectionException: "An exception occured in driver: SQLSTATE[HY000] [2002] Permission denied" at /home/www/classic-symfony/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/AbstractMySQLDriver.php line 103 ですが、AbstractMySQLDriver.php は system_u:object_r:httpd_sys_content_t:s0 です。 以上、よろしくお願いします。
回答: Enforcing でうまくいっているサーバーと `getsebool -a` に違いはないでしょうか。 たとえば、`setsebool httpd_can_network_connect_db on` で許可を与えるとどうでしょうか。 /var/log/audit/audit.log に SELinux のポリシーに違反したもの("avc: denied") が記録されていますので、それを調べると何かわかるかもしれません。