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

Laravel部署至Apache服务器后图片链接异常问题求助

Laravel部署到Apache后图片无法访问的排查与解决办法

嘿,我之前也碰到过一模一样的问题,咱们一步步来排查解决:

  • 先确认服务器上的软链接是否真的创建成功
    本地执行的php artisan storage:link不会自动同步到服务器(毕竟软链接是本地文件系统的关联)。你得登录服务器,进入项目根目录手动执行:

    php artisan storage:link
    

    执行完去public目录下看看,有没有storage这个软链接,它应该指向../storage/app/public。如果创建失败,大概率是服务器用户没有写入public目录的权限。

  • 检查目录与文件的权限设置
    Apache运行的用户(通常是www-data)需要对storage目录和软链接对应的目标目录有读写权限。可以执行以下命令调整:

    # 把目录所属用户改成Apache运行用户
    chown -R www-data:www-data storage public/storage
    # 设置目录权限为755,文件权限为644
    chmod -R 755 storage
    chmod -R 644 storage/app/public/photos/*
    
  • 确保Apache允许跟随软链接
    打开Apache的虚拟主机配置文件或者项目根目录的.htaccess文件,检查是否有允许跟随软链接的配置。如果没有,添加或修改:
    在虚拟主机的<Directory>块里加上:

    Options +FollowSymLinks
    

    或者在.htaccess中添加同样的内容,修改后记得重启Apache:

    sudo systemctl restart apache2
    
  • 检查视图中图片的访问URL是否正确
    一定要用Laravel的asset()函数生成图片链接,比如:

    <img src="{{ asset('storage/photos/' . $photoName) }}" alt="用户照片">
    

    别直接写相对路径,asset()会根据你的APP_URL配置生成正确的绝对URL,避免服务器根目录差异导致的路径错误。

  • 排查SELinux的限制(如果服务器开启了SELinux)
    不少Linux服务器默认开着SELinux,它会阻止Apache访问非标准目录。可以先临时关闭测试:

    sudo setenforce 0
    

    如果图片能正常访问了,就设置SELinux上下文让Apache有权限访问storage目录:

    chcon -R -t httpd_sys_rw_content_t storage/
    

    这样就能永久解决SELinux的限制问题。

  • 确认文件是否真的上传成功
    去服务器的storage/app/public/photos目录下看看,有没有上传的图片文件。如果这里都没有文件,那问题出在上传逻辑,而不是访问路径上。

内容的提问来源于stack exchange,提问作者mariobros

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:01:47