私のコントロール外のストリーミングサーバーを使用してストリーミングされた大きなビデオファイルがあります。ビデオファイルを削除したい場合があります。ストリーミングサーバーを使用している人がファイルを閲覧すると、PHPのエラーが「許可が拒否されました」と表示されます。PHPでファイルを削除できるかどうかを確認してください
ファイルを削除できるかどうかを確認する前に確認したいと思います。私は実際にファイルを削除しようとすると、それが失敗するかどうかを確認したくない、私は事前にチェックしたいと思います。
これは、これまでの私のコードです:
$file = "video.flv";
$file2 = "newvideoname.flv";
clearstatcache();
if (is_writeable($file)) {
echo "is writeable";
}
else {
echo "is NOT writeable";
}
echo "\n";
$fh = fopen($file, 'a+');
if (!flock($fh, LOCK_EX | LOCK_NB)) {
// file locked, do something else
echo "is locked";
}
else {
echo "not locked!";
}
fclose($fh);
echo "\n";
if (touch($file)) {
echo "modification time has been changed to present time";
}
else {
echo "Sorry, could not change modification time";
}
echo "\n";
rename($file, $file2);
コードを実行しながら、私はvideo.flvをストリーミングするときに私が得る出力:
is writeable
not locked!
modification time has been changed to present time
PHP Warning: rename(video.flv,newvideoname.flv): Permission denied in ...
は時々私は得る:
is writeable
PHP Warning: fopen(video.flv): failed to open stream: Permission denied ...
PHP Warning: flock() expects parameter 1 to be resource, boolean given
is locked
PHP Warning: fclose(): supplied argument is not a valid stream resource
PHP Warning: touch(): Utime failed: Permission denied
Sorry, could not change modification time
PHP Warning: rename(video.flv,newvideoname.flv): Permission denied ...
そのため、ファイルがPHPによってロックされず、PHPによってtouch()されないことがあります。そして、もちろん名前の変更は機能しませんがmetimes PHPは、renameコマンドまで "all is fine"と言っています。名前を変更するコマンドにはがありません。はランダムチャンスで動作します。
ファイルはどうすればよいですか?
ファイルのアクセス許可はどうですか? –
@KA_linビデオがストリーミングされていないときは、renameコマンドは完全に – Tominator
で動作するので、問題はありますか? –