无法在windows上打开PHP应用程序生成的文件


Can't open files generated by PHP app on windows

我有一个问题,当我试图打开我的CMS在我的windows机器上生成的文件。它有一个上传功能,可以将文件保存在给定的位置(它在我的用户文件夹上,我应该拥有所有的写和读权限)。

我在那个文件夹里只能看到一个通用的缩略图,由windows为每种图像类型生成的缩略图,在这种情况下是png和jpeg。我尝试更改de image权限并将其设置为当前计算机用户,但它不起作用。我无法将这些文件移动到另一个位置(通过FTP将它们上传到服务器)。

我想知道是否有办法改变这种行为。

我注意到的一件事是,如果我复制和粘贴这些文件,我可以看到其内容正常。我知道我可以对每一个都这样做并重命名,但是那个文件夹里有几十张图片……我不想每次上传新图片都做同样的事情。

这只发生在被移动的图像(我使用php的move_uploaded_file函数,顺便说一下),而不是那些生成的(裁剪,调整大小等)。

这是因为Windows在移动文件时保持TEMP文件夹(通常是c:/Windows/TEMP)的文件权限。为了防止它,你需要将"php.ini"中的"upload_tmp_dir"更改为你的服务器目录,或者为你的windows临时文件夹设置广泛的权限。

您可能在某些php文件中出现错误,导致图像无法正确显示。

为了检测问题,我要做的是注释掉负责显示图像的php文件中的header()调用,并查看除了图像数据之外是否有任何输出。

检查整个输出,只需要一个字符来中断所有内容,所以检查输出的顶部或底部是否没有空行。如果您有错误日志,请参考它,它将帮助您快速跟踪问题。

当我遇到这个问题时,它通常是在图像生成过程中显示的通知或警告,如果你没有禁用错误输出到屏幕,通知文本将被认为是图像数据的一部分,这使得浏览器无法解释你的图像。

如果你愿意,我可以仔细看看你,但我需要看到你在做什么,在php文件,以便能够告诉你肯定。