我正在使用 Laravel 并将文件上传到文件夹 使用此代码:
$request->file('file')[$key]->storeAs('public/' . $model[0] . '/' . $data['id'], $name);
我已经运行过这个命令:
php artisan storage:link
在本地主机上一切正常,但是当我将其上传到 cpanel 时出现此错误:
Forbidden
You don't have permission to access this resource.
Server unable to read htaccess file, denying access to be safe
Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.
我检查了上传的文件是否有权限
700
,而不是755
像文件夹$model[0]
.
我该如何解决这个问题?
我的
.htaccess
档案:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
作为测试,将您的
.htaccess
文件权限设置为 666。我打赌它会起作用。然后重置为 640,将 .htaccess
的所有权更改为 root
,在您的 Apache httpd 配置中查找 Group
设置并将组更改为 Apache 配置中的 Group
设置。
这可以防止除 root 之外的任何人修改您的
.htaccess
文件,但允许 Apache 读取它。
您还应该确保您的 Laravel 存储目录可由 Apache
User
或 Group
写入。
.htacces 文件:Chmod(至 755)是一种选择。
另一个是将Chown的所有者或组更正为Web服务器的所有者或组。 在标准设置中大多称为“www-data” 外壳:chown www-data .htaccess(所有者) 或 Shell:chown root.www-data .htaccess(组) 或两者 Shell:chown www-data.www-data .htaccess (Owner&Group)
但是您的错误可能与上传文件的文件权限有关
也许您还必须定义可见性并将其应用于上传的文件。 看看: https://laravel.com/docs/10.x/filesystem#file-visibility