LoginSignup
11
12

More than 5 years have passed since last update.

php内で操作したらapacheのpermission deniedが表示される時

Posted at

どういうエラーなのか

PHPでunlink、fopenのような関数を使っていたときにちょくちょく発生したので記載。
例えば、以下のような表示がされる時

こんな警告
Warning: file_get_contents(/ディレクトリパス/ファイル名): failed to open stream: Permission denied in [エラーが起きているPHPファイル]

まず何を調べるのか

エラーの内容がaccess toではじまるものとは違って、該当するファイルに至るまでのパスの所有者/所有グループで阻まれることがあるので、ディレクトリの一覧表示で所有者/所有グループを確認する

一覧で確認
$ ls -la
drwxr-xr-x 3 kamo   kamo 4096 Sep 11 22:39 .
drwxr-xr-x 3 kamo   kamo 4096 Sep 11 14:01 ..
-rw-r--r-- 1 kamo   kamo   33 Sep 11 14:01 .bash_logout
-rw-r--r-- 1 kamo   kamo  176 Sep 11 14:01 .bash_profile
-rw-r--r-- 1 kamo   kamo  124 Sep 11 14:01 .bashrc
drwxr-xr-x 3 kamo   kamo 4096 Sep 11 14:01 temp

この場合、apacheでアクセスしようとしても所有者/所有グループがapacheではなく、kamoになっているため、apacheではアクセスができなかった。

どのように変更すればいいのか

筆者の場合、アクセスしようとしているtempディレクトリが誰でもアクセスしていいような中身であったため、以下のように変更した

所有者/所有グループ変更&&アクセス権限変更
chown apache:apache 「アクセスするパス」/temp/
chmod 777 「アクセスするパス」/temp/

このように所有者/所有グループの権限を変えることでapacheでの操作が可能になる

もう一度一覧で確認
$ ls -la
drwxr-xr-x 3 kamo   kamo   4096 Sep 11 22:39 .
drwxr-xr-x 3 kamo   kamo   4096 Sep 11 14:01 ..
-rw-r--r-- 1 kamo   kamo     33 Sep 11 14:01 .bash_logout
-rw-r--r-- 1 kamo   kamo    176 Sep 11 14:01 .bash_profile
-rw-r--r-- 1 kamo   kamo    124 Sep 11 14:01 .bashrc
drwxrwxrwx 3 apache apache 4096 Sep 11 14:01 temp

注意点

ただし、アクセスする人を制限したい誰もが見れるようにしてはいけないという場合では有効ではないので注意する必要がある

11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12