php - Laravel 5.8 资产 url 在 localhost 和服务器中的工作方式不同
问题描述
我正在尝试从 public/assets/img 文件夹中获取图像,该图像存在于 img 文件夹中,该文件夹位于公用文件夹中的 assets 文件夹中。我曾经src="{{ asset('/assets/img/example.png') }}"
获取图像并且它在我的本地主机中正常工作,但是当我将代码推送到服务器(服务器是 UNIX)时,代码不起作用,但是当我将它更改为就像src="{{ asset('../public/assets/img/example.png') }}"
它在服务器中一样工作但它不在本地。
那么,我们是否有一种方法可以从两者中获取图像,而无需使用不同的 url 进入本地和服务器的asset()。或者为什么在服务器中我必须在“/assets/img/example.png”之前添加“../public”,即使它不在本地?
解决方案
首先,../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() }}
在服务器上使用该功能的每个代码。
推荐阅读
- swiftui - 将 SwiftUI 文本与另一个文本的基线和顶部对齐
- flutter - 无法在 dart/flutter 中的 Stream 内的 forEachAsync 中产生
- visual-studio - 每个用户是否有 Visual Studio 订阅(早期的 MSDN 订阅)?
- php - 使用 $this->db->count_all_results() 时出错;as 在布尔值上调用成员函数 num_rows()
- algorithm - n阶乘时间函数的正确时间复杂度是多少?
- java - 创建用户存储目录以存储租户的配置时出错
- api - 一键登录WHM
- python - 指定功能
- java - RestTemplate postForEntity 返回空响应,但邮递员给出了预期的正文
- r - 无法在数据帧 r 闪亮中转置 1 行的 excel 文件