【问题标题】:Laravel 5.x - Problem with load image and upload or moving file on shared hostingLaravel 5.x - 在共享主机上加载图像和上传或移动文件的问题
【发布时间】:2023-03-24 01:45:01
【问题描述】:

我一直在关注这个thread

但是,到目前为止还不足以解决我的问题,我想问一下这个问题的最佳实践或解决方案

这是我的控制器代码:

  if($request->hasfile('news_photo_url'))
    {

           $image = $request->file('news_photo_url');
           $name=$image->getClientOriginalName();
           $image_path = public_path().'\\img\\news';
           $image_path_to_db = '\\img\\news\\'.$name;
           $image->move($image_path,$name);
    }

这就是我加载图像的方式,

<img src="{{ asset($news->news_photo_url) }}" alt="">

这在我的本地非常好,

但共享主机 cpanel 的情况有所不同,我的应用程序位于此处

home/laravel/

而我的公众号 (index.php) 位于此处

home/public_html/name/

如何正确解决这个问题?

由于添加了这行代码也没有用,

$app->bind('path.public', function() {return __DIR__; });

因为这只是告诉公众在这里,但是存储在db中的路径会有所不同

http://xxx.xxx.com/home/user/public_html/afe1f78ef6233580f2739a69be00027f.jpg

谢谢你

【问题讨论】:

  • 顺便说一句,我也尝试修改控制器的路径,但它也无济于事:(
  • 嗯...我不确定我是否了解您的问题。但我认为您似乎使用错误的一件事是您的资产助手。 src="{{ asset($news-&gt;news_photo_url) }}" 应该类似于 src="{{ asset('/img/news/' . $news-&gt;news_photo_url) }}" 根据您的控制器。
  • 道歉,我自己真的很难解释,我的意思是,这种情况一直都在发生吗?这可能超出主题,但共享主机中的 laravel 应用程序文件夹不应位于 public_html 中,对吗?
  • 我想避免修改那个资产助手..我也尝试将这个 $app-&gt;bind('path.public', function() {return __DIR__; }); 修改为 $app-&gt;bind('path.public', function() {return __DIR__.'img/news'; }); 但不是将文件移动到该文件夹​​,而是创建另一个文件夹名称“img/news”
  • 好吧,我认为放置公用文件夹的最常见位置是框架中的预期位置,该框架位于项目的根目录中,但我建议您仍然可以将其放置在其他位置您考虑配置资产 url,您可以在 app.php 文件中查看此配置,或将其添加到您的 .env 中,名称为 ASSET_URL

标签: laravel upload cpanel move filepath


【解决方案1】:

我认为您可以通过修改 app.php 文件来修改资产的位置,或者我认为更好的方法是在 .env 中添加一个变量来设置资产的位置,具体取决于它们在本地和生产中是否不同。

app.php

'asset_url' => env('ASSET_URL', null),

.env

ASSET_URL=path/to/folder

【讨论】:

    猜你喜欢
    • 2019-06-27
    • 2016-05-21
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 2020-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多