在Laravel 5.4中,即使使用Store函数为路径授予了所有文件权限,仍无法打开流:权限被拒绝。
在Laravel 5.4中,即使使用Store函数为路径授予了所有文件权限,仍无法打开流:权限被拒绝。
我正在尝试将文件上传到laravel 5.4的C:\\Users\\sandeep\\maxo\\storage\\app\\public文件夹中。我正在使用以下代码:\n
\n$path = $request->file(\'import_file\')->store(\'public\');\n是laravel代码。\n但是我收到了这样的错误:\n
\nfopen(C:\\Users\\sandeep\\maxo\\storage\\app\\public/K4oIHMXveyx2VChmAXAcNkTmoIXKACvqoIbbHCeB.): failed to open stream: Permission denied\n
\n这是我的错误截图\n点击这里\n但当我上传图片时,一切正常。
在Laravel 5.4中,即使给予了存储路径的文件权限,仍然可能出现"Failed to open stream: Permission denied"的错误。下面将介绍导致这个问题出现的原因以及解决方法。
问题的原因是文件权限设置不正确。在Laravel中,存储路径通常是`storage`目录。当使用Laravel的`Store`函数保存文件时,可能会出现无法打开文件流的错误,即使给予了存储路径的所有文件权限。
解决方法如下:
1. 首先,我们不建议给予存储路径的所有文件权限为`777`,因为这会造成安全风险。
2. 相反,我们可以使用以下命令来设置正确的文件权限:
sudo chown -R www-data:www-data storage
如果你使用的是Apache服务器,这个命令将给予Apache用户权限。
通过执行以上命令,我们将存储路径的所有文件和目录的所有权和组都设置为Apache用户。这样,Apache用户将具有对存储路径的访问权限,从而解决了"Failed to open stream: Permission denied"的错误。
在Laravel 5.4中,当使用`Store`函数保存文件时,可能会出现"Failed to open stream: Permission denied"的错误。这是由于文件权限设置不正确导致的。通过使用`sudo chown -R www-data:www-data storage`命令,将存储路径的所有文件和目录的所有权和组都设置为Apache用户,可以解决这个问题。这样,Apache用户将具有对存储路径的访问权限。不过,我们不建议给予存储路径的所有文件权限为`777`,因为这会造成安全风险。