Senda proxy-umhverfi til undirskipunar í PHP
Notaðu aðskilið umhverfi og rökfylki proc_open fyrir einn niðurhalsforrit, og varðveittu arfgeng gildi viljandi.
Fyrir PHP 7.4 eða nýrra skaltu halda skipunarrökunum og umhverfi undirferlisins aðskildum:
$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 koma úr núverandi úttaksmeðferð forritsins. Athugaðu hvort ræsing mistókst, stýrðu pípunum og lokaðu ferlinu í gegnum þennan lífsferil.
array_replace(getenv(), ...) varðveitir umhverfi foreldrisins á meðan skipt er út þessum tveimur gildum fyrir barnið. Farðu yfir arfgengar hástafalegu proxy- og framhjáhlaupsbreytur þegar þær gætu breytt fyrirhugaðri leið.
Rökfylkið kemur í veg fyrir að skel túlki &-tákn, dollara-tákn eða bil í auðkennum. Engin reikningsberandi úthlutun er innfelld í skeljarskipun.
Þetta dæmi velur curl vegna þess að það styður breyturnar sem sýndar eru. Hægt er að fylla þessi umhverfisgildi fyrir opinbera HTTP-leið með vistfang úr HTTP-proxylistanum. Annað keyranlegt forrit þarf sitt eigið studda proxyviðmót; cURL-valkostir PHP stilla ekki það ytra forrit.