ホームページ >バックエンド開発 >PHPチュートリアル >ファイルディレクトリ書き込みエラー
フォルダーの作成にはphpを使用します。 0777 権限を設定します。 file_put_content を使用してファイルを書き込むと、エラーが報告されます:
ストリームを開けませんでした: 権限が拒否されました'
1. 最初に思い浮かぶのは、作成されたフォルダーに書き込み権限があるかどうかを判断する関数を使用します。 test.txt テストを作成すると、成功する可能性があります。
さらに奇妙なのは、プログラムは十数個のファイルを正常に書き込むことができますが、特定のファイルに書き込むとエラーを報告することです。書き込み権限がない場合は、ファイルが正常に作成されていない可能性があります。
2. パスは何度も確認しました。
それに、他の可能性は思いつきません。専門的なアドバイスをいただけますでしょうか、ありがとうございます。
ターゲットファイルが存在し、他のソフトウェアによって開かれている可能性があります
エラーが発生した場合、完全なエラーメッセージとエラー行のコードが表示される必要があります(変数が関係している場合は、変数の値も一緒に指定する必要があります)
ターゲットファイルが存在し、他のソフトウェアによって開かれている可能性があります
エラーが発生した場合、完全なエラーメッセージとエラー行のコードは次のようになります。 give (変数が関与する場合、変数の値は (一緒に与えられる) である必要があります
エラー状況の要点を簡単にまとめました。詳細なエラー レポートは次のとおりです:
メッセージ「E_WARNING: file_put_contents(E:AppServwwwphpwindupload/windid/attachment/avatar/000/00/05/515_middle.jpg) [function.file-put-contents]: ストリームを開けませんでした: 許可が拒否されました'
エラー行: $put_re = file_put_contents($avatar_dir_save, $img_re);//アバターを書き込みます
$img_re 変数は画像です。 「3453」などのランダムな文字列に変更しても機能しません。
変数 $avatar_dir_save は主に、エラー レポート内のパスが正しいことを示します。
ファイルを書き込む前に、これらのコードを実行する前にファイルが存在するかどうかを確認します。そして、ファイルを書き込めないというエラーが表示されたので、フォルダーを確認しましたが、確かにそのようなファイルはありませんでした。
それ以外の可能性は考えられません。
さらに、http プロセスはシステム ユーザー グループです。このユーザー グループに権限があることを確認してください。
is_writable -- 指定されたファイル名が書き込み可能かどうかを判断します
is_writable -- 指定されたファイル名が書き込み可能かどうかを判断します
discuz 関数を使用します
public static function dirWriteable($dir) {
$writeable = 0 ;
if(!is_dir($dir)) {
exit('sdg');
@mkdir($dir) {
if($ fp = @fopen ("$dir/test.txt", 'w')) {
@fclose($fp);
@unlink("$dir/test.txt") } else {
$ writeable = 0;
}
}
return $writeable;
}
フォルダーが書き込み可能でない場合は、1 つのファイルも書き込むことができないはずです。なぜ 10 個以上書き込むとエラーが発生するのでしょうか。これは非常に面倒です
コードを投稿して、作成したループに問題がないか確認してください。
名前付けの問題 あるファイルが書き込まれた場合、単独で 1 つだけ存在するか、定期的に複数存在するか、または分散して存在するか、これらをすべて試してください
名前付けの問題 特定のファイルが書き込まれた場合、単独で 1 つだけ存在しますか?通常のものはまだいくつかありますが、散在しています。これらをすべて試してみてください
名前はランダムですが、エラーが発生した場合に表示されるファイル パスも正しいとします。したがって、ファイル名は重要ではなくなりました。正しい道だけで十分です。
名前付けの問題? 特定のファイルが書き込まれている場合、それが 1 つだけなのか、定期的に複数あるのか、それとも分散しているのか、これらすべてを試してください。
分散しています。実行するとすぐにエラーが発生する場合もあれば、5 番目または 11 番目のエラーが発生する場合もあります。
名前付けの問題? 特定のファイルが書き込まれている場合、それが 1 つだけなのか、定期的に複数あるのか、それとも分散しているのか、次の
ファイル パス全体の長さについては、セグメント パスを試してください。うまくいかない場合は、マシンを変更してみてください。それでもうまくいかない場合は、元の DZ フォーラム ファイルを放棄して、自分でファイルを作成することをお勧めします。