【问题标题】:Path for images for Laravel project from cpanel来自 cpanel 的 Laravel 项目的图像路径
【发布时间】:2021-03-14 08:56:39
【问题描述】:

我在 Laravel 中为我的项目在视图中显示图片时遇到问题。保存照片的应用程序中的目标路径是:public_path (/ images) 但最近我将项目放在服务器上的 cpanel 中,并从 url 中删除 /public,我使用了一篇谷歌文章,并在 public_html 文件夹之外创建了一个名为 laravel 的文件夹,我在其中保存应用程序文件,在 public_html 中我只保留公共文件夹中的文件应用。在视图中,我将图片显示如下:“{{asset ('images /'. $ Img-> file_name)}}” .. 只有它不再显示。图片已保存但不再显示。我提到它保存在 public_html 文件夹之外的 Laravel 文件夹中。我认为 public / images 是在那里自动创建的。我想知道是否有人遇到过这样的事情以及解决方案是什么。谢谢

【问题讨论】:

  • 你需要用你的root/public_html/public路径创建一个符号链接到root/laravel/public
  • @sta 我想你可以这样做,但这听起来很模糊。 OP 可能应该将public_html 改为public。同一事物有 2 个不同的名称,具体取决于您如何配置 apache。
  • @Donkarnash 这还不够。 ..创建:laravel_project 文件夹中的 public / images 并保存在那里..而不是 public_html / public / images
  • 我猜 images 文件夹应该在 public_html 中:public_html/images 并且一旦将 require_once __DIR__.'/public/index.php'; 更改为 require_once __DIR__.'../public_html/index.php'; 就可以了

标签: laravel path cpanel


【解决方案1】:

在 Laravel 8 中,我在注册方法中将其添加到 /app/Providers/AppServiceProvider.php 中解决了这个问题:

public function register()
{
    $this->app->bind('path.public', function () {
        return base_path('../public_html');
    });
}

但为了从“php artisan storage:link”命令创建符号链接,我还必须将此代码添加到 /bootstrap/app.php,就在最后一个单例之后:

$app->bind('path.public', function () {
    return base_path("../public_html");
});

最后我使用这段代码来获取将发送到我的刀片模板的图像:

$image=Storage::disk('public')->url('path_to_image');

【讨论】:

    【解决方案2】:

    我解决了这样的问题: 在 register() 中的 AppServiceProvider 中,我输入了以下代码:

    $this->app->bind('path.public', function () {
            return base_path('../public_html');
        });
    

    现在我有 public_html/images 并且我的图像被保存在那里..以及 myy 应用程序的其余部分,位于 public_html 文件夹之外的另一个名为 laravel_project 的文件夹中

    【讨论】:

    • 这是一个了不起的技巧。将您的答案标记为已接受
    • 如何在刀片模板中引用图像
    猜你喜欢
    • 1970-01-01
    • 2013-12-09
    • 2019-03-05
    • 2011-01-09
    • 2018-02-02
    • 2014-05-05
    • 2011-04-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多