Я пытаюсь создать небольшой сервис, который может получать файл и отправлять его в другое место, не создавая физической копии (из соображений безопасности).
Я отправляю файл с запросом POST в виде необработанных двоичных данных и обращаюсь к нему с помощью file_get_contents('php://input')
упрощенный код:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://totally-legit-url');
curl_setopt($ch, CURLOPT_RETURNTRASNFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: text/plain']);
curl_setopt($ch, CURLOPT_POSTFIELDS, file_get_contents('php://input'));
$response = curl_exec($ch);
Однако проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я отправляю файл, даже небольшие файлы (я пробовал файлы разных размеров, например, 2 КБ, 299 КБ и 8 МБ), PHP автоматически создает временный файл в sys_temp_dir
каталог, который именно то, что я пытаюсь предотвратить. Я всюду искал ответ, но не нашел способа помешать PHP создать временный файл. Я даже пытался установить sys_temp_dir
в /dev/null
но тогда скрипт просто вылетел с ошибкой.
Скрипт работает на Apache 2.4.25 в PHP 7.1.3
Есть ли способ заставить сервер не создавать временные файлы и работать только с памятью?
Задача ещё не решена.
Других решений пока нет …