首页 > 解决方案 > 上传文件不再在公共网站上工作,但在本地工作?

问题描述

我主要在 C# 中工作,但继承了一个运行良好的 php / laravel 应用程序。它已经工作了很长一段时间,我从未遇到过这个问题。今天上午 11 点左右,我们的网站不再上传图片/标准文件。

我们在安装了 IIS 和 PHP 的 Windows 环境中运行。我们的代码允许您上传图片并存储一些附加信息。PHP / Laravel(甚至检查了 IIS 日志、事件查看器和 laravel 日志)并且没有发生错误。我们的应用程序只是坐在那里尝试上传文件。最终我们的屏幕只是刷新并且没有上传文档或文件。如果我在我的机器上本地尝试相同的测试(因为我们开发了它)它工作正常并且上传发生。

我知道需要确保对文件位置的权限,但就像我说的那样,这在过去一年半内运行良好。由于该站点是匿名访问,我们使用 IUSR 帐户,并为该用户提供了所涉及目录(我们存储图像文档或文件的目录)的正确权限。我还确保没有 Windows 更新导致此问题,但是最后一次 Windows 更新是在 1/24 并且我们的网站当天运行良好,直到本月 28 日。

例如代码如下所示:

   // Audit Documents: Label Image
    if ($request->hasFile('audit_label_image')) {
        $document = new Document();
        $document->title = 'Document for Audit with id ' . $audit->audit_id;
        $document->filetype = $request->audit_label_image->extension();
        $document->save();

        $audit_document = new AuditDocument();
        $audit_document->audit_id = $audit->audit_id;
        $audit_document->document_id = $document->document_id;
        $audit_document->type_id = 63; // "Label Image" document type
        $audit_document->save();

        $request->audit_label_image->storeAs('audit', $document->document_id . '.' . $request->audit_label_image->extension() );
    }

我们的应用程序有一个保存的主记录(审计),然后它会保存与审计相关的其他对象。那是一个文档,然后我们将该审计的引用存储到文档(因此上面的对象AuditDocument)。当我们单击 UI 上的“保存”按钮时,它会旋转轮子,就像它试图保存图像/文档一样。没有控制台错误或网络错误......它最终刷新屏幕只是在我们的审计表(sql server)中保存了实际的“审计”对象,但是文档、审计文档和图像(物理文件)不是保存。我什至尝试编写一个小测试来上传文件,但我们一无所获。

我不知道它是否收到 HTTP 500 错误(因为我们没有收到任何错误)。如前所述,这一切最近都停止了工作,但我们没有进行代码更改来导致这种情况。不确定我还能在哪里查看或在 php / laravel 方面有任何可以帮助我的指针?

更新

我们的任何表格enctype="multipart/form-data"都导致了这个问题。我们删除此行的那一刻,一切正常,但文件当然不会发布。过去是否有其他人在 IIS 上使用 PHP / Laravel 遇到过这个问题?我们已授予 IUSR、IIS_USERS、IIS_WPG、NETWORK、SYSTEM、AUTHENTICATED 用户权限,所以权限方面我们应该没问题...

标签: phplaraveliis

解决方案


问题已解决 - 奇怪的是,我必须进入C:\Windows\Temp并清除该目录,其中包含 PHP 生成且从未删除的 80 gigs 临时文件。我清除它的那一刻,一切都开始工作了。奇怪的是,它所在的服务器仍然有足够的空间(超过 20 个演出)所以我不知道这个文件夹是否有一些限制?

无论如何,我现在很好!


推荐阅读