Prijenos proxy okruženja podređenoj PHP naredbi
Koristite proc_open-ovo odvojeno okruženje i polje argumenata za jedan preuzimač, namjerno čuvajući naslijeđene vrijednosti.
Za PHP 7.4 ili noviji držite argumente naredbe i okruženje podređenog procesa odvojeno:
$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 i $descriptorSpec dolaze iz postojeće obrade izlaza aplikacije. Provjerite neuspjelo pokretanje, upravljajte cijevima i zatvorite proces kroz taj životni ciklus.
array_replace(getenv(), ...) čuva roditeljsko okruženje dok zamjenjuje ove dvije vrijednosti za podređeni proces. Pregledajte naslijeđene velikim slovima pisane proxy i bypass varijable kada bi mogle promijeniti predviđenu rutu.
Polje argumenata sprječava ljusku da tumači ampersande, znakove dolara ili razmake iz vjerodajnica. U naredbi ljuske nema ugrađene dodjele koja nosi račun.
Ovaj primjer odabire curl jer podržava prikazane varijable. Adresa s popisa HTTP proxyja može popuniti te vrijednosti okruženja za javnu HTTP rutu. Druga izvršna datoteka zahtijeva vlastito podržano proxy sučelje; PHP-ove vlastite cURL opcije ne konfiguriraju taj vanjski program.