在 IIS 上的 laravel 中上传文件后出现 HTTP 错误 500.50

问题描述 投票:0回答:2

我在 php/laravel 中上传文件。文件进入

public/uploads
目录。

但是,如果我访问 url 上的文件

testlocal/site/public/uploads/files.pdf
,我会收到此错误:

HTTP-Error 500.50 - URL Rewrite Module Error.

但是,如果我将此文件从普通的 Windows 资源管理器复制到

public/uploads
目录,它就可以工作:|

我的网络配置

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
      <rewrite>
          <rules>
              <rule name="Imported Rule 1" stopProcessing="true">
                  <match url="^" ignoreCase="false" />
                  <conditions logicalGrouping="MatchAll">
                      <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                      <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                  </conditions>
                  <action type="Rewrite" url="index.php" />
              </rule>
          </rules>
      </rewrite>
  </system.webServer>

还有我的文件上传

if (Input::hasFile('file')) {

    $file = Input::file("file");
    $size = $file->getSize();

    $originalName = $file->getClientOriginalName();
    $fileName = time() . "-" . str_random(5);
    $extension = $file->getClientOriginalExtension();

    if($file->move(__DIR__ . '/../../../public/uploads/', $fileName . "." . $extension)) {
      $upload = new Upload();
      // ...
      $upload->save();

      $answer = array( 'answer' => 'File transfer completed' );
      $json = json_encode( $answer );

      echo $json;
    }

错误代码:

0x80070005

// 编辑:好的,如果我给他们文件

everyone
访问权限,它就可以工作......但是我怎样才能使其自动执行?

php laravel iis upload
2个回答
0
投票

完成工作的更好、更可靠的方法是创建一个全新的文件夹供 PHP 使用,而不是 C:\Windows\Temp 。如果您吸取了教训,您就已经知道应该避免将其放入系统控制的文件夹中,以避免任何不需要的继承。只需创建类似 C:\php\upload_dir\ 的内容,然后添加所需的 IUSR 和 IIS_IUSRS 权限即可。还记得相应地更改 php.ini 文件。

参考:https://www.ryadel.com/en/php-how-to-fix-error-500-on-uploaded-images-and-files/


0
投票

此错误是由于 php 引起的,可能是服务器端存在某种限制。例如文件夹的读写权限。

  1. 转到 php.ini 打开 display_error = On。

  2. 打开cmd输入:iisreset。

  3. 现在您可以看到 PHP 错误,只需解决它,然后上传文件即可。

© www.soinside.com 2019 - 2024. All rights reserved.