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

Laravel Backpack Basset资源路径错误及cURL连接失败求助

Laravel Backpack Basset URL生成错误及cURL连接拒绝问题解决

问题概述

  • Basset生成的外部资源URL错误:错误路径为 http://localhost/var/www/vendor/backpack/crud/src/resources/assets/css/common.css,正确路径应为 http://localhost/storage/basset/vendor/backpack/crud/src/resources/assets/css/common.css
  • 执行 php artisan basset:check 时触发cURL错误:cURL error 7: Failed to connect to localhost port 80: Connection refused

环境配置

Nginx 配置

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    # For https
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name localhost;
    root /var/www/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }
}

Laravel .env 配置

APP_NAME='App'
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=http://localhost
LOG_CHANNEL=stack

解决方案

1. 修正Basset URL生成逻辑

  • 首先确保Laravel storage目录已创建软链到public目录,在Laradock的workspace容器中执行:
    php artisan storage:link
    
  • 编辑 config/basset.php 配置文件,确保remote部分的url指向正确的公开路径:
    'remote' => [
        'url' => env('APP_URL') . '/storage/basset',
        // 其他配置...
    ],
    

2. 解决容器内cURL连接拒绝问题

Laradock中Nginx与PHP-FPM是独立容器,PHP容器内的localhost指向自身而非Nginx容器,导致cURL请求失败:

  • 修改 .env 文件中的APP_URL为Nginx容器的服务名(Laradock默认服务名为nginx):
    APP_URL=http://nginx
    
    本地浏览器访问仍使用http://localhost,Docker内部服务间通过服务名通信。

3. 清除缓存并重新生成资源

依次执行以下命令:

php artisan cache:clear
php artisan config:clear
php artisan basset:clear
php artisan basset:generate

4. 验证修复结果

再次运行检查命令:

php artisan basset:check

此时应不再出现cURL连接错误,且Basset生成的URL会自动指向/storage/basset/路径下的资源。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 07:00:15