Välityspalvelinympäristön välittäminen PHP-alikomennolle
Käytä proc_openin erillistä ympäristöä ja argumenttitaulukkoa yhdelle lataajalle ja säilytä perityt arvot tarkoituksella.
PHP 7.4:ssä tai uudemmassa pidä komennon argumentit ja aliprosessin ympäristö erillään:
$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 ja $descriptorSpec tulevat sovelluksen nykyisestä tulosteen käsittelystä. Tarkista epäonnistunut käynnistys, hallinnoi putkia ja sulje prosessi tämän elinkaaren kautta.
array_replace(getenv(), ...) säilyttää pääympäristön ja korvaa nämä kaksi arvoa aliprosessille. Tarkista perityt isoilla kirjaimilla kirjoitetut välityspalvelin- ja ohitusmuuttujat, kun ne voivat muuttaa aiottua reittiä.
Argumenttitaulukko estää kuorta tulkitsemasta tunnistetietojen ampersand-merkkejä, dollarimerkkejä tai välilyöntejä. Kuorikomennossa ei ole yhtään tiliä kantavaa määritystä.
Tämä esimerkki valitsee curlin, koska se tukee näytettyjä muuttujia. Osoite HTTP-välityspalvelinluettelosta voi täyttää nämä ympäristöarvot julkiselle HTTP-reitille. Toinen suoritettava tiedosto tarvitsee oman tuetun välityspalvelinrajapintansa; PHP:n omat cURL-asetukset eivät määritä tätä ulkoista ohjelmaa.