PHP 无法打开上传的文件

PHP can't open uploaded files

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

php是否可以更改文件?

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

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

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

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

点击"Continue"后,问题解决!

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

您可能会在 Microsoft IIS 上使用 PHP 时遇到以下问题:从 move_uploaded_file 函数获取权限被拒绝的错误,即使所有文件夹权限似乎都是正确的。我必须设置以下内容才能使其正常工作:

  1. 通过 IIS 管理控制台对文件夹的写入权限。
  2. 在文件夹的安全设置中对 IUSR_'server' 的写入权限。
  3. 在文件夹的安全设置中对 "Domain Users" 写入权限。

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

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

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