【问题标题】:I can' upload file on my shared folder using laravel我无法使用 laravel 将文件上传到我的共享文件夹
【发布时间】:2017-04-28 13:46:13
【问题描述】:

我有一个托管在共享主机上的 laravel 项目。使用我在Laravel Deploy Instruction看到的系统

所以我假设上传图片——用户的图片。到 public_html 文件夹,但由于不在 public_html 中,因此用户无法上传他们的图像。因为我的代码位于 public_html 文件夹旁边,并且它不允许一般用户的写入权限。所以我尝试将它上传到“存储文件夹”(即我的 laravel 项目文件夹,它与 www 'public_html' 文件夹处于正常级别。)它可以工作我可以在存储文件夹中看到图像,但我无法访问,因为它在 public_html 文件夹后面。和任何不能指向的东西。示例project/storage/app/public 是具有用户图像的文件夹,如果我在<img src="project/storage/app/public/user.png" > 中指向它,它不会显示,因为浏览器在public_html 文件夹内查找project/storage/app/public,而它在public_html 之外。所以有人可以谈谈这个。多谢你们。还是在这种情况下使用 htaccess?

【问题讨论】:

  • 我会在每个 Laravel 共享主机问题上说同样的话……放弃共享主机。 Digital Ocean 上的 VPS 每月 5 美元。对于像 Laravel 这样的复杂应用,没有理由让自己经历共享托管的痛苦。
  • 谢谢,我认为应该这样做

标签: php laravel .htaccess


【解决方案1】:

您需要创建指向您的存储文件夹的符号链接。

请看这个答案:

Laravel 5 - How to access image uploaded in storage within View?

【讨论】:

  • Route::get('/storage-link', function() { $exitCode = Artisan::call('storage:link'); return '<h1>The [public/storage] directory has been linked.</h1>'; }); 在浏览器上使用路由运行它
  • 这怎么不会在我的共享主机上创建符号链接
【解决方案2】:

链接提供的上述方法适用于离线但并非所有共享托管站点都支持工匠 Laravel sysmlink。所以绝对和最好的方法是使用 php symlink() 函数From PHP MANUAL

所以只需将此代码添加到您的 web.php 即project\route\web.php

Route::get('/symlink', function()
{
    if(symlink('/home/username/projectfolder/storage/app/public', '/home/username/public_html/storage')){
    echo "We rock yea stackoverflow!!!! best programming software";}
});

所以username 是您的主目录的名称

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    相关资源
    最近更新 更多