Прослеђивање прокси окружења подређеној 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(), ...) чува родитељско окружење док замењује ове две вредности за подређени процес. Прегледајте наслеђене прокси и бајпас променљиве писане великим словима када би могле да промене предвиђену путању.
Низ аргумената спречава љуску да тумачи амперсанде, знаке долара или размаке из акредитива. У команди љуске нема уграђеног додељивања које носи налог.
Овај пример бира curl јер подржава приказане променљиве. Адреса са листе HTTP проксија може попунити те вредности окружења за јавну HTTP путању. Друга извршна датотека захтева сопствени подржани прокси интерфејс; сопствене cURL опције у PHP не конфигуришу тај спољни програм.