Пренесување прокси-окружување до подредена PHP-команда
Користете го одделното окружување и низата аргументи на proc_open за еден преземач, намерно зачувувајќи ги наследените вредности.
За PHP 7.4 или понова верзија, држете ги аргументите на командата и окружувањето на подредениот процес одделно:
$environment = array_replace(getenv(), [
'http_proxy' => 'http://proxy.example:8080',
'https_proxy' => 'http://proxy.example:8080',
]);
$process = proc_open(
['/usr/bin/curl', '--fail', '--max-time', '30',
'--output', $outputFile, 'https://downloads.example/data.csv'],
$descriptorSpec,
$pipes,
null,
$environment
);$outputFile и $descriptorSpec доаѓаат од постоечката обработка на излезот во апликацијата. Проверете за неуспешно стартување, управувајте со цевките и затворете го процесот низ тој животен циклус.
array_replace(getenv(), ...) го зачувува родителското окружување додека ги заменува овие две вредности за подредениот процес. Прегледајте ги наследените променливи на прокси и заобиколување со големи букви кога тие би можеле да ја променат предвидената рута.
Низата аргументи го спречува shell-от да ги толкува амперсандите, знаците за долар или празните места во акредитивите. Во командата на shell нема вградено доделување што носи сметка.
Овој пример го избира curl бидејќи ги поддржува прикажаните променливи. Адреса од списокот со HTTP прокси може да ги пополни тие вредности на окружувањето за јавна HTTP рута. Друга извршна датотека бара сопствен поддржан прокси-интерфејс; сопствените cURL-опции на PHP не ја конфигурираат таа надворешна програма.