You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 10部署到cPanel后无法访问Storage文件求助

Laravel 10 cPanel部署:Storage软链无法访问的解决方案

1. 修正Filesystems配置

你的config/filesystems.php中public磁盘的url配置与软链结构不匹配,需修改为:

'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage', // 原配置为/storage/app/public,改为/storage
    'visibility' => 'public',
    'throw' => false,
],

2. 清除配置缓存

修改配置后必须清除缓存,确保新配置生效:

php artisan config:cache

若cPanel无终端权限,可创建临时PHP脚本执行:

<?php
require __DIR__.'/../your_laravel_project_path/vendor/autoload.php';
$app = require_once __DIR__.'/../your_laravel_project_path/bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$kernel->handle(
    new Symfony\Component\Console\Input\ArrayInput(['command' => 'config:cache']),
    new Symfony\Component\Console\Output\NullOutput
);
echo "配置缓存已清除";

上传到public_html访问该脚本,完成后删除。

3. 验证软链接有效性

在cPanel文件管理器中检查public_html/storage链接:

  • 若为红色(无效),先删除旧链接:
    rm /home/your_cpanel_username/public_html/storage
    
  • 用绝对正确的实际路径重新创建软链:
    ln -s /home/your_cpanel_username/your_laravel_project/storage/app/public /home/your_cpanel_username/public_html/storage
    
    替换your_cpanel_username和your_laravel_project为真实路径。

4. 确认目录与文件权限

确保相关目录和文件权限符合要求:

# 设置目录权限
chmod 755 /home/your_cpanel_username/your_laravel_project/storage
chmod 755 /home/your_cpanel_username/your_laravel_project/storage/app
chmod 755 /home/your_cpanel_username/your_laravel_project/storage/app/public

# 设置文件权限
chmod 644 /home/your_cpanel_username/your_laravel_project/storage/app/public/performa_invoices/*

# 确保所有者为你的cPanel用户名
chown -R your_cpanel_username:your_cpanel_username /home/your_cpanel_username/your_laravel_project/storage

5. 检查.htaccess规则

确保public/.htaccess已完整复制到public_html,且无阻止storage访问的规则。Laravel默认规则会跳过实际存在的文件/目录,内容如下:

<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>

6. 测试访问路径

上传文件后,正确的访问URL应为:

https://your-domain.com/storage/performa_invoices/your-image.jpg

请勿添加/app/public后缀。

内容的提问来源于stack exchange,提问作者Muhammad Nabeel Siddiqui

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 05:49:54