Send et proxy-miljø til en underordnet PHP-kommando
Bruk proc_opens separate miljø og argumentarray for én nedlaster, og behold arvede verdier bevisst.
For PHP 7.4 eller nyere, hold kommandolinjeargumentene og barneprosessens miljø atskilt:
$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 og $descriptorSpec kommer fra applikasjonens eksisterende utdatahåndtering. Sjekk for mislykket start, håndter rørene og lukk prosessen gjennom den livssyklusen.
array_replace(getenv(), ...) bevarer foreldremiljøet mens den erstatter disse to verdiene for barnet. Gå gjennom arvede proxy- og omgåelsesvariabler i store bokstaver når de kan endre den tiltenkte ruten.
Argumentarrayet hindrer et skall i å tolke &-tegn, dollartegn eller mellomrom i påloggingsinformasjon. Det er ingen kontobærende tilordning innebygd i en skallkommando.
Dette eksempelet velger curl fordi det støtter variablene som vises. En adresse fra HTTP-proxylisten kan fylle ut disse miljøverdiene for en offentlig HTTP-rute. En annen kjørbar fil trenger sitt eget støttede proxygrensesnitt; PHPs egne cURL-alternativer konfigurerer ikke det eksterne programmet.