Ошибка PHP функции copy() если в названии файла есть русские буквы
У PHP функции copy($from, $to) возникает ошибка, если в параметре $from указать URL, в котором содержатся русские буквы, например:
$from = 'https://snipp.ru/demo/906/Ибисы бесплатные фотографии.jpg';
Вернет ошибку:
Warning: copy(https://snipp.ru/demo/906/Ибисы бесплатные фотографии.jpg): failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request
Решение проблемы
URL-кодирование кириллицы с помощью функции rawurlencode():
function urlencode_str($matches) { $str = $matches[0]; return $str; } $from = 'https://snipp.ru/demo/906/Ибисы бесплатные фотографии.jpg';