Ar gyfer PHP 7.4 neu ddiweddarach, cadwch ddadleuon y gorchymyn a'r amgylchedd plentyn ar wahâ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 ac $descriptorSpec yn dod o driniaeth allbwn bresennol y rhaglen. Gwiriwch am lansiad aflwyddiannus, rheolwch y pibellau a chaewch y broses drwy'r cylch bywyd hwnnw.

array_replace(getenv(), ...) yn cadw amgylchedd y rhiant wrth ddisodli'r ddau werth hyn ar gyfer y plentyn. Adolygwch newidynnau dirprwy a ffordd osgoi a etifeddwyd mewn priflythrennau pan allent newid y llwybr arfaethedig.

Mae'r arae ddadleuon yn atal cregyn rhag dehongli ampersandau, arwyddion doler neu fylchau manylion mewngofnodi. Nid oes unrhyw aseiniad sy'n cario cyfrif wedi'i fewnosod mewn gorchymyn cregyn.

Mae'r enghraifft hon yn dewis curl am ei fod yn cefnogi'r newidynnau a ddangosir. Gall cyfeiriad o'r rhestr dirprwy HTTP lenwi'r gwerthoedd amgylchedd hynny ar gyfer llwybr HTTP cyhoeddus. Mae angen ei ryngwyneb dirprwy cefnogol ei hun ar weithredadwy gwahanol; nid yw opsiynau cURL PHP ei hun yn ffurfweddu'r rhaglen allanol honno.

Erthyglau cysylltiedig