2016-11-16 5 views
0

Я поместил свои видео на свой общий веб-хост, и пользователь может напрямую скачать все файлы. но я хочу скрыть свои фактические пути к файлам и ограничить время загрузки ссылок. Если файлы были на одном сервере, это нормально работает. , когда я использую этот код:Как создать ссылку для загрузки Файлы, которые находятся на другом сервере в 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. Это относится также к ПКППАМ и т.д.

Вы должны думать о шифровании:

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