2016-11-16 23 views
0

我将我的视频放到我的共享Web主机上,用户可以直接下载所有文件。但我想隐藏我的实际文件路径并制作时间有限的下载链接。 如果文件在同一台服务器上,它工作正常。 当我使用此代码:如何生成下载链接位于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项目不是同一个主机。

+0

可能出现[open \ _basedir限制有效。文件(/)不在允许的路径中:](http://stackoverflow.com/questions/1846882/open-basedir-restriction-in-effect-file-is-not-within-the-allowed-路径) – user3158900

回答

0

你可以使用类似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)。

相关问题