Puhverserveri keskkonna edastamine PHP alamkäsule
Kasutage proc_openi eraldi keskkonda ja argumentide massiivi ühe allalaadija jaoks, säilitades päritud väärtused teadlikult.
PHP 7.4 või uuema puhul hoidke käsu argumendid ja alamprotsessi keskkond eraldi:
$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 pärinevad rakenduse olemasolevast väljundi käsitlemisest. Kontrollige ebaõnnestunud käivitust, haldake torusid ja sulgege protsess selle elutsükli kaudu.
array_replace(getenv(), ...) säilitab vanemkeskkonna, asendades need kaks väärtust alamprotsessi jaoks. Vaadake üle päritud suurtähelised puhverserveri ja möödaviigu muutujad, kui need võivad kavandatud marsruuti muuta.
Argumentide massiiv takistab kestal tõlgendada volituste ampersande, dollarimärke ega tühikuid. Kesta käsus ei ole ühtegi kontot kandvat omistust.
See näide valib curli, sest see toetab näidatud muutujaid. Aadress HTTP-puhverserverite loendist võib need keskkonnaväärtused avaliku HTTP-marsruudi jaoks täita. Teine käivitatav fail vajab oma toetatud puhverserveri liidest; PHP enda cURL-valikud ei seadista seda välist programmi.