Laravel 5.8资产URL在本地主机和服务器中无法正常工作

时间:2019-12-22 13:45:22

标签: php laravel-5.8

我正在尝试从public / assets / img文件夹中获取图像,该图像存在于img文件夹中,该img文件夹位于资产文件夹中,而该资产文件夹也位于public文件夹中。我使用src="{{ asset('/assets/img/example.png') }}"来获取图像,并且该图像在我的本地主机中可以正常工作,但是当我将代码推送到服务器(服务器是UNIX)时,代码无法正常工作,但是当我将其更改为{{ 1}}可以在服务器中使用,但不在本地。

因此,我们是否有一种方法可以从这两种图像中获取图像,而无需对本地和服务器使用不同的URL到asset()中。还是为什么在服务器中我必须在“ /assets/img/example.png”之前添加“ ../public”,甚至不在本地?

1 个答案:

答案 0 :(得分:1)

首先,在服务器上使用../public是不正确的。

我怀疑是因为您使用"/assets/img/example.png"而不是"assets/img/example.png"

无论哪种方法,如果问题仍然存在,您可以覆盖服务器上的公用路径,以避免更新使用{{ asset() }}函数的每个代码。

将此应用程序绑定代码添加到位于您的Laravel项目中的AppServiceProvider.php中

<laravel-project-name>/app/Providers/AppServiceProvider.php

    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->bind('path.public', function() {
            return realpath(base_path().'../public');
        });
    }

通过这种方式,您不必更改在服务器上使用{{ asset() }}函数的每个代码。