ホームページ >バックエンド開発 >PHPチュートリアル >PHPアップロードファイルmove_uploaded_fileの問題

PHPアップロードファイルmove_uploaded_fileの問題

WBOY
WBOYオリジナル
2016-06-23 14:16:401150ブラウズ


Linux システムで実行されている Apache サーバー。

は、オーディオを再生するための HLS プロトコルを実装することです:

プログラムは a.m3u8 と 1.ts をアップロードし、10 秒後に a.m3u8 と 2.ts をアップロードします...a.m3u8,3.ts..そしてそのサイクルは続きます。
プレーヤークライアントを開いていないときは、どれだけ時間がかかっても、ファイルをアップロードするときはすべて問題ありません。

これらのファイルを再生するためにプレーヤーを開いたとき、つまり a.m3u8 ファイルにアクセスしたときです。
この時点では、a.m3u8 のアップロードは失敗しましたが、他のファイルのアップロードは正常でした。つまり、a.m3u8 という名前のファイル以外の他のファイルはアップロードできることになります。

ファイルを受信するための PHP ページのコードはおおよそ次のとおりです:

$temp_name = $_FILES['upfile']['tmp_name'];
$file_name = $_FILES['upfile']['name']; ;
$file_name = str_replace("\","",$file_name);
$file_path = $upload_dir.$file_name; name check
if ( $file_name == "") {
$message = "無効なファイル名が指定されました";
return $message; }

$result = move_uploaded_file($temp_name, $file_path); ($file_path,0755 ))
$message = "権限を 755 に変更できませんでした。";
else
$message = ($result)?"$file_name は正常にアップロードされました。" : "ファイルのアップロードに問題があります。";

アップロード失敗 この時のメッセージの内容は「755 への変更に失敗しました。」
結果の内容は空で、move_uploaded_file 関数の実行に失敗したと分析しました。
元々ディレクトリ内にa.m3u8ファイルがありましたが、アップロードに失敗するとディレクトリ内のa.m3u8ファイルも消えてしまいました。

親愛なるマスターの皆様、これが奇妙な問題かどうか調べるのを手伝ってもらえませんか?
許可の問題が原因ですか? a.m3u8にアクセス中なので移動して置き換えることはできないのでしょうか?
あるいは、他の奇妙な問題のせいかもしれません。


アドバイスをお願いします!
ありがとう! ! !








ディスカッションに返信 (解決策)

PHP エラー メッセージを開きます。

ini_set("display_errors",1);
error_reporting(E_ALL); 最も考えられる原因は、move_uploaded_file のターゲット フォルダーに書き込み権限がないことです。

Open PHP エラー メッセージ。

ini_set("display_errors",1);
error_reporting(E_ALL); 最も考えられる原因は、move_uploaded_file のターゲット フォルダーに書き込み権限がないことです。

ご回答ありがとうございます!

サーバーは私の管理下にないので、明日はphpエラーメッセージを開くこの方法を試すしかありません。

ただし、この move_uploaded_file のターゲット ファイルにアクセスするクライアントがない場合は、すべてが正常です。
クライアントがこのファイルにアクセスすると、move_uploaded_file が失敗し、move_uploaded_file の元のターゲット ファイルが存在します。失敗後、ファイルは失われます。




理由はもうわかりませんか? a.m3u8 がアクセスされているため、それを置き換えることはできません

理由はすでにわかっていますか? a.m3u8 がアクセスされているため、移動できません 彼を交換してください

では、この問題を解決する方法を知りたいですか?
強制的に置き換えることができます。

このファイルを使用しているソフトウェアを閉じます。他に方法はありません

すでにそれを持っているのに、再アップロードする意味は何でしょうか?


このファイルを使用しているソフトウェアを閉じます。他に方法はありません
すでにそれを持っているのに、再アップロードする意味は何でしょうか?

は HLS プロトコルを実装するためのもので、

m3u8 はインデックス ファイルであり、内部のコンテンツは常に更新される必要があります。

この Apache が Windows 上で動作することを今知りました。テストを通じて、Linux 上で実行できることがわかりました。

Windows が原因である可能性があります。使用中のため交換できません。 Linuxでも置き換え可能です。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。