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(), ...) पितृ वातावरण सुरक्षित राख्छ र बच्चाका लागि यी दुई मान प्रतिस्थापन गर्छ। वंशानुगत ठूला अक्षरका प्रोक्सी र बाइपास भेरिएबलहरू समीक्षा गर्नुहोस् जब तिनले अभिप्रेत मार्ग परिवर्तन गर्न सक्छन्।

आर्गुमेन्ट एरेले शेललाई प्रमाणहरूका एम्परसेन्ड, डलर चिन्ह वा खाली ठाउँहरू व्याख्या गर्नबाट रोक्छ। शेल कमाण्डमा खाता बोक्ने कुनै असाइनमेन्ट एम्बेड गरिएको छैन।

यो उदाहरणले curl छान्छ किनभने यसले देखाइएका भेरिएबलहरूलाई समर्थन गर्छ। HTTP प्रोक्सी सूचीबाट एउटा ठेगानाले सार्वजनिक HTTP मार्गका लागि ती वातावरण मानहरू भर्न सक्छ। फरक एक्जिक्युटेबललाई आफ्नै समर्थित प्रोक्सी इन्टरफेस चाहिन्छ; PHP का आफ्नै cURL विकल्पहरूले त्यो बाह्य प्रोग्राम कन्फिगर गर्दैनन्।

सम्बन्धित लेखहरू