Posredovanje proxy okolja podrejenemu ukazu PHP
Uporabite ločeno okolje in matriko argumentov proc_open za enega prenašalca, namerno ohranite podedovane vrednosti.
V PHP 7.4 ali novejšem imejte argumente ukaza in okolje podrejenega procesa ločene:
$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 in $descriptorSpec prihajata iz obstoječe obdelave izhoda v aplikaciji. Preverite neuspešen zagon, upravljajte cevi in zaprite proces v tem življenjskem ciklu.
array_replace(getenv(), ...) ohranja nadrejeno okolje in za podrejeni proces zamenja ti dve vrednosti. Preglejte podedovane proxy in obhodne spremenljivke z velikimi črkami, ko bi lahko spremenile predvideno pot.
Matrika argumentov preprečuje lupini, da bi razlagala ampersande, znake za dolar ali presledke v poverilnicah. V ukazu lupine ni vgrajene dodelitve, ki bi nosila račun.
Ta primer izbere curl, ker podpira prikazane spremenljivke. Naslov s seznama proxyjev HTTP lahko zapolni te okoljske vrednosti za javno pot HTTP. Druga izvršljiva datoteka potrebuje svoj podprti vmesnik proxy; lastne možnosti cURL v PHP ne nastavijo tega zunanjega programa.