2016-11-16 18 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はSCPにも適用されるサーバ2からファイルをダウンロードしてしまうためけれどもこれは不必要なトラフィックにつながるなど

あなたが暗号化を考える必要があります

$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)); 

あなたは、その後にこれを復号化する必要があります同じキーを持つ第2のサーバー。そこにlaravelをインストールしていない場合は、独自の解読機能を実装できます(laravel openssl encryption参照)。

関連する問題