apache Laravel文件上传返回forbidden 403,文件权限是700不是755

biswetbf  于 2023-03-24  发布在  Apache
关注(0)|答案(2)|浏览(200)

bounty将在4天后过期。回答此问题可获得+50的声誉奖励。softya正在寻找来自声誉良好来源的答案

我正在使用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,而不是像文件夹$model[0]那样的755
如何解决此问题?
我的.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>
h9vpoimq

h9vpoimq1#

作为测试,将您的.htaccess文件权限设置为666。我打赌它会起作用。然后重置为640,将.htaccess的所有权更改为root,在Apache httpd配置中查找Group设置,并在Apache配置中将group更改为Group设置。
这可以防止root以外的任何人修改您的.htaccess文件,但允许Apache读取它。
您还应该确保Laravel的存储目录可由Apache UserGroup写入。

f87krz0w

f87krz0w2#

.htacces文件:Chmod(到755)是一个选项。

另一种方法是使用Chown将所有者或组更正为Web服务器的所有者或组。在通常称为“www-data”Shell的标准设置中:chown www-data .htaccess(所有者)或壳牌:chown root.www-data .htaccess(Group)或两者Shell:chown www-data.www-data .htaccess(所有者和组)

但您的Error可能与上传文件的File权限有关

也许你必须定义和应用的可见性uplaoded文件太多. Hace看看:https://laravel.com/docs/10.x/filesystem#file-visibility

相关问题