私は、Apacheサーバー上でPHPスクリプトを実行しており、スクリプトからいくつかのファイルをコピーする必要があります(ファイルをコピーするBashスクリプトを実行するため)。ディレクトリ /tmp
には問題なくコピーできますが、/tmp/foo
にコピーしようとすると、次のようなエラーが発生します。
cp: cannot create regular file '/tmp/foo/file.txt': Permission denied
ディレクトリ /tmp
と /tmp/foo
のパーミッションが同じ値に設定されているにもかかわらず、です。
何が問題なのかわかりますか?
しかし、自分のアカウントで /tmp/foo
を作成した場合、そのディレクトリは自分専用のパーミッションを持っています。もし、他のユーザー(またはプログラム)が書き込みできるようにしたい場合は、このコマンドでパーミッションを変更してください。
chmod 777 /tmp/foo
の場合
もし、このディレクトリの中に以前からある他のファイルがある場合は、上記のコマンドに -R
フラグを追加してください。
**更新情報
このコマンドは、/tmp/foo
のオーナーを自分のものからapacheのデフォルトユーザーに変更するために使用します。
sudo chown www-data:www-data /tmp/foo -R
を実行します。
また、apache2の設定で、phpスクリプトを実行するユーザを確認してください。