首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >共享主机的存储问题

共享主机的存储问题
EN

Stack Overflow用户
提问于 2021-03-16 20:58:46
回答 2查看 725关注 0票数 3

我正在一个共享主机上部署我的第一个项目。

我遵循本教程部署网站,并将public文件夹转换为托管计划的public_html文件夹。

当我从我的网站上传图片(使用storeAs()方法)时,文件被上传到private/storage文件夹中,而不是public文件夹(我想在那里)。

asset()函数尝试显示来自public_html/storage的图像。

,我能做什么?

谢谢您:)

我的档案是这样的:

代码语言:javascript
复制
private/
- app/
- bootstrap/
- config/
- database/
- resources/
- routes/
- storage/
- tests/
- vendor/
public_html/
- css/
- js/
- images/
- js/
- storage/

(Laravel 8,试图由Hostinger主持)

教程:https://dev.to/pushpak1300/deploying-laravel7-app-on-shared-hosting-hostinger-31cj

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-17 13:04:59

好了,伙计们,我找到解决办法了!

下面是如何使用public_html文件夹在共享主机上部署Laravel项目:https://dev.to/pushpak1300/deploying-laravel7-app-on-shared-hosting-hostinger-31cj

这是可行的,但是如果您处理文件上传,storeAs()方法可能会出现问题(就像我一样)。

为了解决这个问题,我通过在可用磁盘中添加以下内容来编辑MyProject/config/filesystem.php

代码语言:javascript
复制
'public_folder' => [
   'driver' => 'local',
   'root' => 'PATH',
   'url' => env('APP_URL').'/storage',
   'visibility' => 'public',
]

PATH替换为公共存储的完整路径(例如/home/you/domains/mydomain.com/public_html/storage/)。

现在,打开管理文件上传和编辑的控制器,如下所示:

代码语言:javascript
复制
request()->image->storeAs('/uploads', 'filename.png', 'public_folder');

这将把request()->image上传到public_html/storage/uploads/filename.png中。

如果你和我有同样的问题,我希望它能对你有帮助。

票数 0
EN

Stack Overflow用户

发布于 2021-03-16 21:29:29

为何会出现这个问题呢?

如果在项目中实现并需要存储内容,则出于安全原因,需要将存储文件夹链接到公用文件夹,并使URL变得简单、干净并为用户所读,因此,当您将laravel项目上载到服务器时,需要运行以下命令行来完成链接过程:

代码语言:javascript
复制
php artisan storage:link

而且,由于您将laravel项目托管到共享服务器,因此您无法访问运行上述命令行的终端。因此,我将向您展示一种在不使用SSH或终端的情况下手动执行此操作的方法。修复问题1的步骤1-在本地主机服务器端(在将项目上载到服务器之前),确保您已经完成了文件系统配置,然后运行以下命令行:

代码语言:javascript
复制
php artisan storage:link

在此之后,您将收到一条消息:“链接已经创建”。现在还可以。2-上传项目到服务器,存储链接将不能像你预期的那样工作,所以我们需要开始修复这个问题。转到公用文件夹,你会找到一个叫做“存储”的文件夹,删除它。4-转到“路由”文件夹并打开“web.php”文件,然后在文件顶部复制和粘贴以下代码:

代码语言:javascript
复制
Route::get('/linkstorage', function () {
    Artisan::call('storage:link') // this will do the command line job
});

别忘了保存这些变化。此外,您还可以通过“api.php”并使用像postman这样的请求工具进行相同的处理。现在我们只需要运行这段代码,所以我们需要在浏览器搜索栏输入以下URL来执行GET请求:“https://www.your-domain.com/public/index.php/linkstorage”或”https://www.your-domain.com/public/linkstorage”--这个请求将运行上面的代码“Artisan::call(‘存储:链接’)”,这反过来将运行命令行。

代码语言:javascript
复制
PHP artisan storage: link

现在您可以转到公用文件夹,您将看到再次创建并标记为快捷文件夹的“存储”文件夹,这意味着公用存储文件夹现在链接到项目的存储文件夹。6-现在,如果您上传或创建一个文件到存储文件夹,那么它也将出现在公共/存储文件夹中,现在您可以在浏览器的搜索栏上点击文件的URL,您将成功地获得该文件:)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66663322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档