共享主机 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' => [
'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 不工作的主要内容,如果未能解决你的问题,请参考以下文章