共享主机 Laravel 8 主机问题:Symlink 不工作

Posted

技术标签:

【中文标题】共享主机 Laravel 8 主机问题:Symlink 不工作【英文标题】:Shared Hosting Laravel 8 Hosting problem: Symlink is not working 【发布时间】:2021-04-07 13:50:23 【问题描述】:

我需要将我的 laravel 项目部署到网络上。有了这个introduction 但是托管服务提供商不允许我使用符号链接(符号链接),我打电话给客户服务,并告诉我出于安全原因被阻止。 所以,由于我不使用符号链接,所以在上传图片和部署图片时存在很大的问题。

有没有办法部署我的应用程序?

【问题讨论】:

用路由创建符号链接 托管服务提供商不允许符号链接,所以请阅读问题。 创建一个自定义文件系统,将文件上传到公用文件夹并设置默认 【参考方案1】:

我更改了index.php 中的公共路径,一切正常。

$app->bind('path.public', function() 
    return '/home/u8320874/domain.xyz';
);

【讨论】:

【参考方案2】:

更改config/filesystems.php 中的磁盘配置以通过public_path() 函数读取和写入公共文件夹。

如果您在共享主机上进行部署,您可能有另一个文件夹,如 public_html 作为您的公共文件夹,它不包含在您的源中。尝试使用点 ../../public_html/

链接到 public_html
'public' => [
     'driver'     => 'local',
//   'root'       => storage_path('app/public'),
     'root'       => public_path(),
     'url'        => env('APP_URL'),
     'visibility' => 'public',
],
'photos' => [
     'driver'     => 'local',
     'root'       => public_path('photos'),
     'url'        => env('APP_URL') . '/photos',
     'visibility' => 'public',
],

【讨论】:

【参考方案3】:

另一种方法是使用 php 创建类似符号链接的东西,例如您可以创建如下所示的路由:

Route::get(
    '/storage/file',
    function ($file) 
        $filepath = "../storage/app/public/".$file;

        header("Cache-Control: public");
        header("Content-Type: ".mime_content_type($filepath));
        header('Content-Length: '.filesize($filepath));

        readfile($filepath);
        die();
    
);

也许不是最佳实践,但它会解决您的问题。它与符号链接的作用相同。

【讨论】:

以上是关于共享主机 Laravel 8 主机问题:Symlink 不工作的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 表单返回,共享主机上的 500 服务器错误

Laravel 共享主机 .htaccess

Laravel 与子域共享主机

共享主机中的 Laravel 存储链接

Laravel 部署共享主机子域

如何在子域共享主机上安装 laravel