V PHP 7.4 ali novejšem imejte argumente ukaza in okolje podrejenega procesa ločene:

$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 in $descriptorSpec prihajata iz obstoječe obdelave izhoda v aplikaciji. Preverite neuspešen zagon, upravljajte cevi in zaprite proces v tem življenjskem ciklu.

array_replace(getenv(), ...) ohranja nadrejeno okolje in za podrejeni proces zamenja ti dve vrednosti. Preglejte podedovane proxy in obhodne spremenljivke z velikimi črkami, ko bi lahko spremenile predvideno pot.

Matrika argumentov preprečuje lupini, da bi razlagala ampersande, znake za dolar ali presledke v poverilnicah. V ukazu lupine ni vgrajene dodelitve, ki bi nosila račun.

Ta primer izbere curl, ker podpira prikazane spremenljivke. Naslov s seznama proxyjev HTTP lahko zapolni te okoljske vrednosti za javno pot HTTP. Druga izvršljiva datoteka potrebuje svoj podprti vmesnik proxy; lastne možnosti cURL v PHP ne nastavijo tega zunanjega programa.

Sorodni članki