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.

Artikuj të ngjashëm