PHP 7.4 же андан жаңыраак үчүн буйруктун аргументтерин жана туунду процесстин чөйрөсүн өзүнчө кармаңыз:

$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 жана $descriptorSpec колдонмонун учурдагы чыгууну иштетүүсүнөн келет. Ийгиликсиз башталганын текшериңиз, түтүктөрдү башкарыңыз жана процессти ошол жашоо цикли аркылуу жабыңыз.

array_replace(getenv(), ...) ата-эне чөйрөсүн сактайт жана бул эки маанини туунду үчүн алмаштырат. Мураска калган баш тамгадагы proxy жана айланып өтүү өзгөрмөлөрүн карап чыгыңыз, анткени алар көздөлгөн маршрутту өзгөртүшү мүмкүн.

Аргументтер массиви кабыкка эсеп маалыматындагы амперсанддарды, доллар белгилерин же боштуктарды чечмелөөгө жол бербейт. Кабык буйругунда эсеп алып жүргөн дайындоо жок.

Бул мисал curl'ду тандайт, анткени ал көрсөтүлгөн өзгөрмөлөрдү колдойт. HTTP proxy тизмесиндеги дарек жарыя HTTP маршруту үчүн ошол чөйрө маанилерин толтура алат. Башка аткарылуучу файлга өзүнүн колдоого алынган proxy интерфейси керек; PHP'нин өз cURL параметрлери ошол тышкы программаны конфигурациялабайт.

Тектеш макалалар