如何为生产或子域系统创建laravel存储符号链接?

Miz*_*han 11 php terminal console storage laravel

当我在laravel本地开发服务器上php artisan storage:link工作时,对我来说工作正常.但是当我将我的网站转移到生产服务器时,我看到我的公共存储链接是一个文件夹.然后我删除了试图创建链接.我收到错误,因为我的应用程序位于根文件夹中并尝试解决此问题.

小智 17

另一种简单的方法是以php artisan storage:link编程方式运行执行命令

在routes / web.php上

Route::get('/foo', function () {
Artisan::call('storage:link');
});
Run Code Online (Sandbox Code Playgroud)

  • 此命令在本地运行良好,但在实时符号链接错误中出错 (5认同)
  • `symlink(): 没有这样的文件或目录` (5认同)

Miz*_*han 14

我通过另一个用于创建符号链接的命令解决了这个问题:

ln -s /path/to/laravel/storage/app/public /path/to/public/storage
Run Code Online (Sandbox Code Playgroud)


Ali*_*Ali 9

如果有人正在寻找另一个使用 php 的灵活解决方案:

Route::get('/link', function () {        
   $target = '/home/public_html/storage/app/public';
   $shortcut = '/home/public_html/public/storage';
   symlink($target, $shortcut);
});
Run Code Online (Sandbox Code Playgroud)

并对文件结构上的 $target 变量和 $shortcut 进行任何必要的更改。

您可以在该网络路由或任何其他函数内使用上述代码。


Wak*_*med 9

最简单的选择是在终端中运行以下命令

php artisan storage:link
Run Code Online (Sandbox Code Playgroud)


小智 5

假设你的 laravel 项目“public”目录和“public_html”目录不同。或者您的子域指针目录可能不同,然后使用您的子域指针目录,例如给定进程下面的“public_html”。

应用命令:$ php artisan storage:link

此命令将创建指向 Laravel 项目的“public”目录的符号链接。不在 "public_html" 内。所以我们需要将“storage”链接移动到“public_html”目录。为此,您可以直接移动。如果它不起作用,则使用命令移动它。进入“public”目录并根据“public_html”目录位置运行以下命令。

$ mv storage /home/yourHostinInfo/domains/domainName/public_html
Run Code Online (Sandbox Code Playgroud)

根据您的托管信息,路径可能会有所不同。