4

次のコードで画像リソースを画像に保存しようとしています:

imagejpeg ($destination_res, $destination, 100);

スクリプトには、機能するファイルアップロードも含まれています(ファイルは常に宛先フォルダーに存在します)-このファイルのアップロード後、このファイルをimagejpeg(). 問題は、コードが機能する場合と機能しない場合があることです。動作しない場合、PHP で次のエラーが発生します。

Warning: imagejpeg(): Unable to open [path] for writing: Invalid argument in script on line xy

コピー プロセスに問題があると思います。おそらく、ファイル アップロード後のコピー プロセスが完全に終了していないため、書き込み可能ではありません。

しかし、コマンドの前にfile_exists($destination)ファイルかどうかもチェックしようとしました。警告エラーの場合でも、両方のチェックが返されます。is_writable($destination)imagejpeg()TRUE

sleep(2)ファイルのアップロードの間に配置するとimagejpeg()、発生するエラーが少なくなります。スリープが長く続くほど、エラーの発生は少なくなります。

誰でも私を助けることができますか?

OS を搭載した PC で作業していますWindows 8- 私は と を使用IIS 8してPHP 5.3.3います。

4

1 に答える 1

2

PHP には使用されるパスの内部キャッシュがあります。ファイルを作成すると、キャッシュが古くなり、ファイルが存在していても (数ミリ秒後に) PHP がエラーをスローする可能性があります...

リアルタイム使用で見つからない作成済みファイルの問題を回避するためclearstatcache()。パスの内部 PHP キャッシュをリセットします。

clearstatcache()ファイルを作成した後、作成したファイルにアクセスする前に呼び出します。

clearstatcache();
imagejpeg ($destination_res, $destination, 100);
于 2013-04-19T09:03:52.690 に答える