如何生成位于 laravel 中另一台服务器上的下载 link 文件
how to generate download link Files that are located on another server in laravel
我把我的视频放在我的共享网络主机上,用户可以直接下载所有文件。但我想隐藏我的实际文件路径并制作限时下载链接。
如果文件在同一台服务器上,则可以正常工作。
当我使用此代码时:
return response()->download('/home2/alihoss1/domains/alihossein.ir/public_html/dl/video/MySql/Sql1.mp4');
我看到这个错误:
is_file(): open_basedir restriction in effect. File(/home2/alihoss1/domains/alihossein.ir/public_html/dl/video/MySql/Sql1.mp4) is not within the allowed path(s): (/home2/alihosse/domains/alihossein.ir/:/tmp/:/usr/local/php-7.0/lib/php/)
您会推荐什么解决方案Õ
视频和 laravel 项目不是同一主机。
您可以使用 file_get_contents() 之类的方法从其他服务器获取文件。这会导致不必要的流量,因为服务器 1 会从服务器 2 下载文件。这也适用于 scp 等
你应该考虑加密:
$hash = encrypt([
'valid_to' => strtotime('+30 minutes'),
'file_path' => '/home2/alihoss1/domains/alihossein.ir/public_html/dl/video/MySql/Sql1.mp4'
]);
return redirect('http://server2.example/download/hash/' . urlencode($hash));
然后您需要使用相同的密钥在第二台服务器上对此进行解密。如果您没有在那里安装 laravel,您可以实现自己的解密功能(参见:laravel openssl encryption)。
我把我的视频放在我的共享网络主机上,用户可以直接下载所有文件。但我想隐藏我的实际文件路径并制作限时下载链接。 如果文件在同一台服务器上,则可以正常工作。 当我使用此代码时:
return response()->download('/home2/alihoss1/domains/alihossein.ir/public_html/dl/video/MySql/Sql1.mp4');
我看到这个错误:
is_file(): open_basedir restriction in effect. File(/home2/alihoss1/domains/alihossein.ir/public_html/dl/video/MySql/Sql1.mp4) is not within the allowed path(s): (/home2/alihosse/domains/alihossein.ir/:/tmp/:/usr/local/php-7.0/lib/php/)
您会推荐什么解决方案Õ 视频和 laravel 项目不是同一主机。
您可以使用 file_get_contents() 之类的方法从其他服务器获取文件。这会导致不必要的流量,因为服务器 1 会从服务器 2 下载文件。这也适用于 scp 等
你应该考虑加密:
$hash = encrypt([
'valid_to' => strtotime('+30 minutes'),
'file_path' => '/home2/alihoss1/domains/alihossein.ir/public_html/dl/video/MySql/Sql1.mp4'
]);
return redirect('http://server2.example/download/hash/' . urlencode($hash));
然后您需要使用相同的密钥在第二台服务器上对此进行解密。如果您没有在那里安装 laravel,您可以实现自己的解密功能(参见:laravel openssl encryption)。