我把我的视频放在我的共享网络主机和用户可以直接下载所有文件。但我想隐藏我的实际文件路径,并建立有时限的下载链接。如果文件位于同一台服务器上,则可以正常工作。当我使用这个代码时:
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是不同的主机。
发布于 2016-11-16 13:43:59
您可以使用类似于内容()的东西从另一台服务器获取文件。但是,这将导致不必要的通信量,因为服务器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加密)。
https://stackoverflow.com/questions/40633050
复制相似问题