4

我尝试通过以下代码将图像资源保存到图像中:

imagejpeg ($destination_res, $destination, 100);

该脚本还包含一个文件上传,它确实有效(文件始终存在于目标文件夹中) - 在此文件上传后,我想将此文件用于imagejpeg(). 问题是有时我的代码确实有效,有时则无效。如果不工作,我会通过 PHP 收到以下错误:

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

我猜是复制过程有问题 - 可能文件上传后的复制过程没有完全完成,因此它是不可写的。

但我也尝试在命令之前检查 iffile_exists($destination)和 if 文件。即使出现警告错误,这两项检查也会返回。is_writable($destination)imagejpeg()TRUE

如果我sleep(2)在文件上传和imagejpeg()更少的错误发生之间放置一个。睡眠时间越长,发生的错误就越少。

谁能帮我?

我正在使用操作系统的 PC 上工作Windows 8- 我使用IIS 8PHP 5.3.3.

4

1 回答 1

2

PHP有一个用于使用路径的内部缓存,当您创建文件时,即使文件存在(几毫秒后),缓存也可能会过时并且PHP会抛出错误......

避免创建的文件在实时使用中找不到的问题clearstatcache()。它重置路径的内部 PHP 缓存。

在创建文件之后调用clearstatcache(),在访问创建的文件之前调用。

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