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

aurhwmvo  于 2023-10-19  发布在  其他
关注(0)|答案(2)|浏览(122)

我用php/laravel上传文件。文件将进入public/uploads目录。
但是,如果我访问URL testlocal/site/public/uploads/files.pdf上的文件,我会收到以下错误:
HTTP-Error 500.50 - URL Rewrite Module Error.
但是,如果我将这个文件从普通的windows资源管理器复制到public/uploads目录,它就可以工作了:|
我的webconfig

<?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;
    }

错误代码:
//编辑:好的,如果我给予他们文件everyone访问权限,它可以工作.但我如何使其自动化?

xzv2uavs

xzv2uavs1#

一个更好、更健壮的方法是为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/

bvjxkvbb

bvjxkvbb2#

这个错误是由于php引起的,可能是服务器端的某种限制。比如文件夹的读/写权限。
1.转到php.inidisplay_error = On
1.打开cmd并键入:iisreset
1.现在你可以看到你的PHP错误。只要解决它并上传文件。

相关问题