【问题标题】:Can't open files generated by PHP app on windows无法在 Windows 上打开 PHP 应用程序生成的文件
【发布时间】:2013-05-16 14:29:48
【问题描述】:

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

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

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

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

更新

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

【问题讨论】:

  • 文件名是什么样的?你是如何尝试打开它们的?什么内容管理系统?
  • 文件名没有特殊字符,例如“somefile.png”。我正在尝试通过普通的双击打开它们,并且我正在使用 Laravel 自己编程的 CMS。
  • 当您在 windows 上说...时,它是否适用于其他任何东西?
  • @DanyKhalife 嗯...我不知道。我提到“Windows”只是为了引用我现在使用的操作系统。
  • 哦,好的,我明白了,在这种情况下,我在下面解释了如何调试代码

标签: php windows file-upload permissions


【解决方案1】:

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

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

检查整个输出,只需要一个字符就可以破坏所有内容,因此请检查输出的顶部或底部是否没有空行。如果您有错误日志,请查阅它,它将帮助您快速跟踪问题。

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

如果您愿意,我可以为您仔细查看,但我需要查看您在该 php 文件中所做的事情才能确定地告诉您。

【讨论】:

  • 对不起,我想我没有像我想的那样清楚。我在浏览器中显示图像没有问题;他们正在按预期出现。问题是我在 Windows 文件系统中看不到图像。但看不到它们根本不是问题……真正的问题是我无法通过 ftp 程序(例如 Filezilla)将文件上传到服务器,因为我总是有“访问权限”来自 FTP 程序的错误。
【解决方案2】:

这是因为 Windows 在移动文件时保留了 TEMP 文件夹(通常是 c:/windows/temp)的文件权限。 为防止这种情况发生,您需要将“php.ini”中的“upload_tmp_dir”更改为您的服务器目录或为您的 Windows 临时文件夹设置广泛权限。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-11
    • 2016-05-05
    相关资源
    最近更新 更多