上传到Heroku时如何访问Laravel符号链接

ifmq2ha2  于 2022-11-13  发布在  其他
关注(0)|答案(3)|浏览(152)

我正在制作一个laravel webapp,我试图访问一个存储符号链接/storage/images/face-ph.png中的图像。
当我在本地这样做的时候,它是有效的:
<img src="/storage/images/face-ph.png>
然而,当我上传到Heroku时,它找不到路径。

ubby3x7f

ubby3x7f1#

阿德南的回答有两个问题:

  • 如果你使用heroku run bash来执行一个命令,它只在一个一次性的dyno中执行。所以这不会影响实时的dyno。
  • php artisan storage:link命令生成一个带有绝对路径的符号链接,所以当你在构建过程中运行它时,它会Map临时构建目录的绝对路径,而不是dyno上最终应用的目录。

我使用了一个简单的相对符号链接来链接这两个目录,并将其添加到您的git仓库中:
cd public/ && ln -s ../storage/app/public storage && cd ..

unftdfkk

unftdfkk2#

如果您正在使用Heroku进行部署,可以尝试

heroku run bash
php artisan storage:link

heroku run /app/php/bin/php /app/www/artisan storage:link

可以使用绝对路径或相对路径运行二进制文件
希望这对你有帮助

lndjwyie

lndjwyie3#

Heroku没有提供在Live Dyno上链接存储的方法。在经历了许多头痛之后,唯一的解决方案是在我的应用程序中创建一个路由,我可以用它来发送“php Artisan storage:link”命令。
下面是代码:

Route::get('/artisan/storage', function() {
    $command = 'storage:link';
    $result = Artisan::call($command);
    return Artisan::output();
})

阅读更多信息:https://www.anycodings.com/1questions/4583766/laravel-storagelink-does-not-work-on-heroku

相关问题