PHP 7.4 və ya daha yenisi üçün əmr arqumentlərini və alt proses mühitini ayrı saxlayı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 və $descriptorSpec tətbiqin mövcud çıxış idarəetməsindən gəlir. Uğursuz başlamanı yoxlayın, boruları idarə edin və prosesi həmin həyat dövrü ilə bağlayın.

array_replace(getenv(), ...) üst mühiti qoruyur və bu iki dəyəri alt proses üçün əvəz edir. Miras alınan böyük hərfli proxy və keçid dəyişənlərini nəzərdən keçirin, çünki onlar nəzərdə tutulan marşrutu dəyişə bilər.

Arqument massivi shell-in etimad məlumatlarındakı ampersandları, dollar işarələrini və ya boşluqları şərh etməsinin qarşısını alır. Shell əmrində hesab daşıyan heç bir təyinat yoxdur.

Bu nümunə curl seçir, çünki göstərilən dəyişənləri dəstəkləyir. HTTP proxy siyahısından bir ünvan bu mühit dəyərlərini açıq HTTP marşrutu üçün doldura bilər. Başqa icra faylı öz dəstəklənən proxy interfeysinə ehtiyac duyur; PHP-nin öz cURL seçimləri o xarici proqramı konfiqurasiya etmir.

Əlaqəli məqalələr