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 पर्याय त्या बाह्य प्रोग्रामची कॉन्फिगरेशन करत नाहीत.

संबंधित लेख