存储:链接在托管 cPanel 上不起作用

Posted

技术标签:

【中文标题】存储:链接在托管 cPanel 上不起作用【英文标题】:storage:link not working on hosting cPanel 【发布时间】:2020-05-19 01:13:43 【问题描述】:

我用php artisan storage:link 创建了一个存储链接,它在localhost 上运行良好,但是,当我在共享主机上部署我的项目时,它不会呈现任何图像。这是我的托管目录结构:

- home2/username
:   + other hosting folders
:   - MyLaravelWebSite
:   :   + other_laravel_folders
:   :   - storage
:   :   :   - app
:   :   :   :   - public
:   :   :   :   :   -images
:   :   :   :   :   :   * some-image.jpg
:   :   :   :   * gitignore
:   :   :   + framework
:   :   :   + logs
:   - public_html
:   :   + assets
:   :   + storage // symlink
:   :   * index.php

图片上传没有任何问题,但是当我尝试渲染它们时它们没有渲染,而它们在本地主机上被渲染得非常好。我认为 符号链接 不起作用。我怎样才能让它发挥作用?

P.s:我在 cPanel 上没有 CLI 的任何访问权限。

【问题讨论】:

您在.env 文件上的APP_URL 是什么?是你项目的网址吗? @hasan05 这是APP_URL=http://localhost 那么,您的图片实际上传到了哪里?我认为它在您的 public_html 文件夹中。所以,你必须改变APP_URL=$your current url 不,它正在上传storage>app>public>images,就像它应该上传一样。只是每当我尝试使用asset('storage/path/to/image.jpg'); 时,符号链接都不起作用...... 你试过更改APP_URL 吗? 【参考方案1】:

更新filesystems.php

'public' => [
            'driver' => 'local',
            'root' => public_path() . '/uploads',// upload file in public dir
            'url' => env('APP_URL').'/uploads', // help to get Storage::url() 
            'visibility' => 'public',
        ],

把它放在filesystems.php 然后你的所有文件将保存在public/uploads 文件夹中 并获取 url 这个函数Storage::disk('public')->url($dbImageUrl); 将起作用

如果您无法创建符号链接,则这是用于 cpanel 的

【讨论】:

这是一个很好的解决方法......但我需要将我的图像保存在 laravel 存储中并从那里获取它们。它正在将它们上传到存储中,但符号链接在 cPanel 中不起作用。我想知道如何使用我定义的路径创建一个新链接。 符号链接在某些 cpanel 上不起作用,所以我使用了这个,在这里你的上传文件夹将是工作链接存储文件夹,如果你想要安全文件,所有文件都是公开的,然后你可以通过 php 尝试跨度> 【参考方案2】:

您可以使用 PHP 和 Laravel 辅助方法来做同样的事情,只需运行一次此代码(例如,将其添加到您的控制器中并调用一次)以手动创建存储链接:

use Illuminate\Support\Facades\File;

File::link(
    storage_path('app/public'), public_path('storage')
);

【讨论】:

【参考方案3】:

尝试在您的公共文件夹 (filename.php) 中创建一个文件。添加代码并保存

$targetFolder = $_SERVER['DOCUMENT_ROOT'].'/storage/app/public';
$linkFolder = $_SERVER['DOCUMENT_ROOT'].'/public/storage';
symlink($targetFolder,$linkFolder);
echo 'Symlink process successfully completed';

浏览你创建的文件site.com/filename.php

信用:https://www.nicateliyev.com/en/post/how-create-symbolic-link-laravel-website-cpanel

【讨论】:

以上是关于存储:链接在托管 cPanel 上不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Flask-Login:在本地机器上不起作用,但在托管上很好

为啥外部链接在构建后在 phonegap 应用程序上不起作用

Wordpress 永久链接在服务器上不起作用

通用链接在真实设备上不起作用

Bootstrap 折叠菜单链接在移动设备上不起作用

超链接在 Wordpress + centos 7 上不起作用