【问题标题】:PHP can't open uploaded filesPHP无法打开上传的文件
【发布时间】:2015-10-04 19:34:31
【问题描述】:

我有带灯的 Ubuntu 服务器。
当我上传 xls 或图像之类的文件时,它工作正常,但是当我尝试打开它时,它说我的 Excel 文件已损坏。图像也会发生同样的事情

php会不会修改文件?

/var/www/publick_html/uploads 的权限是 777

【问题讨论】:

  • 请贴一些与上传过程相关的代码
  • 您如何上传和存储文件?没有代码很难提供帮助。
  • $file = $_FILES['record']['tmp_name']
  • PHP没有修改文件,但你可能没有文件,你检查过文件大小不为0吗?有时您可能会遇到损坏,但这种情况应该很少发生。
  • 我可以通过 ftp 查看和下载这个新上传的文件。但我无法从 Excel 打开它们或打开图像

标签: php web ubuntu-12.04 lampp


【解决方案1】:

嗯,我知道,我使用的是 windows,也许这是非常离题的,但我在上传文件时遇到了类似的问题,我的经验可能对其他人有用。

在我的情况下,上传的文件无法打开,因为它是先写在 C:\Windows\Temp 然后移动到上传目录,但我的临时文件夹没有访问权限。事实上,如果我点击临时文件夹,我会看到:

点击“继续”后,问题就解决了!

【讨论】:

    【解决方案2】:

    问题出在 apache 和 php 的版本中。 apache的版本是2.2,php是5.4 我将我的 apache 升级到 2.4 版本,现在可以正常工作了。

    【讨论】:

      【解决方案3】:

      这应该可以解决您无法在 SQL SERVER 上使用 PHP 打开上传文件的问题。它解决了我的问题。

      在 Microsoft IIS 上使用 PHP 时可能会遇到以下问题:即使所有文件夹权限看起来都正确,move_uploaded_file 函数也会出现权限被拒绝错误。我必须设置以下内容才能使其工作:

      1. 通过 IIS 管理控制台对该文件夹的写入权限。
      2. 在文件夹的安全设置中写入 IUSR_'server' 的权限。
      3. 在文件夹的安全设置中向“域用户”写入权限。

      第三个设置是必需的,因为我的应用程序本身位于一个安全文件夹中 - 使用身份验证(基本或 Windows 集成)来识别用户。当上传发生时,IIS 似乎正在检查这些用户是否具有对该文件夹的写入权限,而不仅仅是 Web 服务器 (IUSR_'server') 是否具有访问权限。

      另外,记得在 IIS 管理控制台中将“Execute Permissions”设置为“None”,这样人们就无法上传脚本文件然后运行它。 (也建议对上传的文件进行其他检查,但“不执行”是一个好的开始。)

      参考https://www.php.net/manual/en/features.file-upload.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-20
        • 2020-04-11
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        • 2017-10-07
        • 2011-05-16
        • 2015-12-17
        相关资源
        最近更新 更多