困ったこと
他サーバーで動いていたphpアプリをCentOS6.6の新サーバーに移動したところ、
file_put_contentsでファイル書き込みができない問題が発生。
構成
- nginx + php-fpm
- ともに実行ユーザーはnginxユーザー
- 書き込みたいディレクトリはchown nginx chmod 777してある
=> permission周りは問題なし、nginxユーザーにsuしても普通に読み書きできる。おかしい
結論
結論から言うと、SELinuxによるアクセス管理に引っかかっていました。
このサーバーでは別にSELinuxは無効でいいので無効にします。
SELinuxの設定確認
今のSELinuxの状態を確認する
$ getenforce
=> enforcing 有効になってる
とりあえず一時的に無効する方法
以下のコマンドで一時的に無効にできる
$ setenforce 0
恒久的に無効にする方法
上記の方法だとOSを再起動するとまた元に戻ってしまう。
OSを再起動してもずっと無効のままにしておきたい時は以下を実行。
sysconfigを修正
$ sudo vi /etc/sysconfig/selinux
SELINUX=enforcing
↓
SELINUX=disabled
OS再起動
$ reboot