我用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
访问权限,它可以工作.但我如何使其自动化?
2条答案
按热度按时间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/
bvjxkvbb2#
这个错误是由于php引起的,可能是服务器端的某种限制。比如文件夹的读/写权限。
1.转到
php.ini
转display_error = On
。1.打开cmd并键入:
iisreset
。1.现在你可以看到你的PHP错误。只要解决它并上传文件。