我一直在开发laravel应用程序,因此出于安全原因,我将所有公共文件都放在了public_html的基本文件夹中,而其他文件都放在了public_html / secondBase中。
现在,当我执行命令: php artisan storage:link 时,出现以下错误。
ErrorException
symlink(): No such file or directory
at vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:265
261| */
262| public function link($target, $link)
263| {
264| if (! windows_os()) {
> 265| return symlink($target, $link);
266| }
267|
268| $mode = $this->isDirectory($target) ? 'J' : 'H';
269|
我厌倦了下面的解决方案
<?php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
public function register()
{
$this->app->bind('path.public', function() {
return base_path() . '/public_html/base';
});
}
我尝试过的第二种方法是使文件 symlink.php ,但是图像仍然损坏。
symlink.php
<?php
symlink('/home/hmm/public_html/secondBase/storage/app/public','/home/hmm/public_html/base/storage');
最后我沿着这条路线出现了第一个错误。
Route::get('/clear', function () {
Artisan::call('route:clear');
Artisan::call('storage:link', [] );
});
感谢您的帮助。
答案 0 :(得分:0)
Go to /public directory and run:
rm storage
Go to Laravel root directory and run:
php artisan storage:link
当laravel项目移动/复制到其他文件夹时,会出现此问题。
存储链接仍然存在,从而导致异常错误。公共/存储文件夹存在,并且指向错误的位置,需要使用rm storage命令将其删除。
之后,在终端中运行php artisan storage:link,它将创建存储链接。
每次移动/复制/部署laravel时,都需要执行此操作!