In proxy-omjouwing trochjaan oan in PHP-bernkommando
Brûk de aparte omjouwing en argumintarray fan proc_open foar ien downloader, en hâld erfde wearden bewust.
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.