「Warning: fopen … failed to open stream: Permission denied … 」と表示されるとき

スポンサーリンク

「Warning: fopen(answer.csv) [function.fopen]: failed to open stream: Permission denied … 」というエラーメッセージは、ファイルへの書き込み権限がないことを示しています。

FTPソフトでアップロードしたファイルの属性を参照して、ファイルに書き込み権限(+読み込み権限)を与えることで解決します。以下は典型的な設定の例です。レンタルサーバーによっては推奨または禁止される設定値もあるので、あくまで参考にとどめてください。

ファイルに書き込み権限を付与する

ファイルに書き込み権限を付与する

ファイルに「読込」「書込」権限を与えてもPermission deniedエラーになる場合、以下の原因も疑ってみてください。

ファイルを動的に作成するプログラムの場合

アンケートや掲示板などで、書き込み先のデータファイルが存在しない場合は自動で新規作成するという仕組みになっている場合は、ディレクトリにアクセスしてファイルを書き込むための権限も与える必要があります。

それには、対象のディレクトリの属性で「実行」をチェックします。実行とは、プログラムを実行する権限や、ディレクトリにアクセスする権限などを指します。以下は典型的な設定例です。

ディレクトリにアクセスできるように「実行」をチェック

ディレクトリにアクセスできるように「実行」をチェック

ディレクトリ内にファイルを書き込むようなプログラムを実行したい場合は、「読込(呼出)」と「書込」だけではなく「実行」も必要ということです。

面倒だからパーミッションを「777」にしてしまおうと思った方は、危険なのでやめましょう。レンタルサーバーによっては「777」に設定することが禁止されている場合もあります。

PHPの基礎が身に付いたかチェックするなら

PHP「直す力」養成ドリル
スポンサーリンク