Laravel-fopen:无法打开流:权限被拒绝。

3

我正在尝试将一张图片上传到laravel的/storage目录中。但是,我遇到了如下错误:

fopen(C:\Temp\AppName\public): failed to open stream: Permission denied

以下是我用于上传图片的代码:

 public  function SaveImage($image){       
    $fileName = time() . '.' . $image->getClientOriginalExtension();
    $path =$image->storeAs('images/users', $fileName);
    return $fileName;
}

我已经给了 IUSR 和 IIS_USER 权限,所以我不明白为什么会出现权限错误。在 Windows 10 (IIS 10) 上图像上传正常运行,在 Windows 7 (IIS 7) 上却因权限被拒绝而失败。 我使用 Laravel 5.7 和 PHP 7.2.11。感谢您的任何帮助。谢谢。

权限被拒绝。还需要了解什么?只需在谷歌上搜索“windows php permission denied”即可。 - Kyslik
是的,我明白了。正如我所指定的那样,我已经授予权限,并且它在 Windows 10 上运行正常,在 Windows 7 上失败。 - Curly_Braces
显然你的权限设置不同。请多搜索谷歌。 - Kyslik
@Curly_Braces 也许你应该将 /storage 文件夹的权限改为777。 - Amit Senjaliya
6个回答

7

我也遇到了这个问题。请确保你更改了 php.ini 文件为:

; Maximum allowed size for uploaded files.
upload_max_filesize = 40M

; Must be greater than or equal to upload_max_filesize
post_max_size = 40M

说明:

php.ini文件的默认设置为

; Maximum allowed size for uploaded files.
upload_max_filesize = 2M

这就是为什么您无法上传大于2 MB的图像。

敬礼


太棒了!都快到2022年了,Voyager仍然会给出相同误导性的“访问被拒绝”错误,而它应该是在PHP上传限制上。 - Abdulaziz Hamdan
谢谢!但我不知道上传文件的最大大小和权限之间的关系。 - Ali

2

我遇到了同样的错误,但问题是图片大小。PHP有文件上传大小的默认限制,在这个特定的Laravel函数中,会显示'文件权限'错误,而不是文件太大或其他错误。在做其他事情之前,请尝试较小的图像(<1MB)。


1
我有一个之前遇到的问题。首先我从项目目录运行了php artisan cache:clear,然后运行了icacls "app/storage" /grant Users:F,最后运行了composer dump-autoload,然后它就正常工作了。我认为这对你也有帮助!

OP使用的是Windows系统,没有chmod命令。如果我有误,请纠正我。 - Kyslik
你为什么这么想?我有同样的问题,它帮了我)) 你为什么这么确定呢? - Ismoil Shifoev
因为他使用的是Windows操作系统;没有任何Shell模拟(如cygwin),Windows操作系统中没有chmod命令。 - Kyslik
我明白你的意思,但如果不使用 shell 模拟,Windows 中的 icacls 命令也可以实现相同的功能吗?! - Ismoil Shifoev
让我们在聊天中继续这个讨论 - Ismoil Shifoev

0

it working!

php artisan cache:clear
php artisan config:clear
sudo chmod -R 777 storage
composer dump-autoload

Good luck!


0

当每个解决方案都失败时,我在上传 CSV 文件时遇到了相同的错误。在检查文件编码后,我发现文件是 UTF-16 格式,因为这个问题...我不知道为什么,但当将其更改为 UTF-8 时,它就可以工作了!

希望我的答案对你有所帮助。


0
如果您正在使用Ubuntu系统或已经安装了Docker,则请转到:
cd tmp/sessionlocks/

然后,一旦您进入了sessionlocks文件夹,就给予权限。

chmod -R 777 .

然后就完成了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接