我在 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 使用,而不是 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/
此错误是由于 php 引起的,可能是服务器端存在某种限制。例如文件夹的读写权限。
转到 php.ini 打开 display_error = On。
打开cmd输入:iisreset。
现在您可以看到 PHP 错误,只需解决它,然后上传文件即可。