Foar PHP 7.4 of nijer, hâld de kommando-arguminten en de omjouwing fan it bernproses apart:

$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 en $descriptorSpec komme fan 'e besteande útfierbehanneling fan 'e applikaasje. Kontrolearje op in mislearre start, behear de buizen en slút it proses fia dy libbenssyklus.

array_replace(getenv(), ...) behâldt de âlderomjouwing wylst dy beide wearden foar it bern ferfangt. Besjoch erfde proxy- en omgongsfariabelen yn haadletters as se de bedoelde rûte feroarje kinne.

De argumintarray hâldt in shell tsjin om ampersands, dollartekens of romten fan oanmeldgegevens te ynterpretearjen. Der is gjin akkount-dragende tawizing yn in shell-kommando ferboud.

Dit foarbyld kiest curl omdat it de toande fariabelen stipet. In adres út 'e HTTP-proxylist kin dy omjouwingswearden foar in iepenbiere HTTP-rûte folje. In oar útfierber bestân hat syn eigen stipe proxy-ynterface nedich; de cURL-opsjes fan PHP sels konfigurearje dat eksterne programma net.

Relatearre artikelen