Kalimi i një mjedisi proxy te një komandë fëmijë e PHP
Përdorni mjedisin e veçantë dhe grupin e argumenteve të proc_open për një shkarkues të vetëm, duke ruajtur me qëllim vlerat e trashëguara.
Për PHP 7.4 ose më të re, mbani argumentet e komandës dhe mjedisin e procesit fëmijë të ndara:
$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 dhe $descriptorSpec vijnë nga trajtimi ekzistues i daljes së aplikacionit. Kontrolloni për nisje të dështuar, menaxhoni tubat dhe mbyllni procesin përmes atij cikli jetësor.
array_replace(getenv(), ...) ruan mjedisin prindëror ndërsa zëvendëson këto dy vlera për fëmijën. Rishikoni variablat e trashëguara të proxy dhe të anashkalimit me shkronja të mëdha kur ato mund të ndryshojnë itinerarin e synuar.
Grupi i argumenteve pengon guaskën të interpretojë ampersand-et, shenjat e dollarit ose hapësirat e kredencialeve. Nuk ka asnjë caktim që mban llogari të integruar në një komandë guaske.
Ky shembull zgjedh curl sepse mbështet variablat e shfaqura. Një adresë nga lista e proxy-ve HTTP mund t'i plotësojë ato vlera mjedisi për një rrugë HTTP publike. Një ekzekutues tjetër kërkon ndërfaqen e vet të mbështetur të proxy-t; opsionet cURL të vetë PHP nuk e konfigurojnë atë program të jashtëm.