如何在没有 ssh 访问或 cron 作业的情况下链接公共存储?

Posted

技术标签:

【中文标题】如何在没有 ssh 访问或 cron 作业的情况下链接公共存储?【英文标题】:How to link public storage without ssh access or cron jobs? 【发布时间】:2022-01-16 19:25:47 【问题描述】:

我需要部署一个 laravel 应用程序,它使用 storage 文件夹作为 public storage,但我没有 ssh access。我正在尝试寻找替代品:

php artisan storage:link

我通过将这条路线放入web.php 中找到了这个线程:Generating a link:

Route::get('generate', function () \Illuminate\Support\Facades\Artisan::call('storage:link'); echo 'ok'; );

但这并没有解决问题。我做错了吗?如何链接公共存储?

编辑:我尝试部署到的糟糕服务器不提供 cron 作业。

【问题讨论】:

它做了什么?当调用 URL http://example.com/generate 时会发生什么?没有?错误? (example.com 这里是你的网站) 一切正常,除了网站无法加载公共存储中的图像。所以他们显示损坏的图标。 那么运行命令没有错误?检查日志以防那里弹出任何内容 运行刚才创建的路由有什么错误吗? 确保您没有上传任何配置缓存并检查您是否上传了正确的 .env 文件 【参考方案1】:

如果可用并在第一次运行作业后创建一个玉米作业。删除这个

ln -s /home/user/laravel/storage/app/public /home/user/public_html/storage

【讨论】:

我刚刚注意到糟糕的服务器甚至不提供 cron 作业。感谢您的回答,但还有其他方法吗? 我已经编辑了问题,不必创建新帖子。对不起,它使您的答案无效。尽管如此,你还是帮了我!【参考方案2】:

问题是我不明白如何正确使用存储链接路由。我不得不补充:

Route::get('/linkstorage', function ()
    \Illuminate\Support\Facades\Artisan::call('storage:link');
    echo 'storage linked!';
);

web.php 并实际导航到domain-name/linkstorage 以触发artisan call。之后,存储被链接,一切正常。

【讨论】:

以上是关于如何在没有 ssh 访问或 cron 作业的情况下链接公共存储?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有像 Quartz Clustering 这样的集中式解决方案的情况下在分布式环境中实现 cron 作业/计划作业? [复制]

如何在 CentOS 上设置 cron 作业

使用firebase和app引擎创建一个关闭的cron作业

如何在 Rails 4 上实现类似 cron 作业

如何取消或停止Google App Engine Cron作业

如何在不询问密码提示的情况下自动执行rsync [关闭]