បញ្ជូនបរិស្ថានប្រូកស៊ីទៅពាក្យបញ្ជាកូន PHP
ប្រើបរិស្ថានដាច់ដោយឡែក និងអារេអាគុយម៉ង់របស់ proc_open សម្រាប់កម្មវិធីទាញយកមួយ ដោយរក្សាតម្លៃដែលទទួលមរតកដោយចេតនា។
សម្រាប់ 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(), ...) រក្សាបរិស្ថានមេ ខណៈពេលជំនួសតម្លៃទាំងពីរនេះសម្រាប់កូន។ ពិនិត្យអថេរប្រូកស៊ី និងឆ្លងកាត់ដែលទទួលមរតកជាអក្សរធំ នៅពេលពួកវាអាចផ្លាស់ប្តូរផ្លូវដែលបានបម្រុង។
អារេអាគុយម៉ង់រារាំង shell ពីការបកស្រាយសញ្ញា ampersand សញ្ញាដុល្លារ ឬចន្លោះនៃព័ត៌មានសម្ងាត់។ មិនមានការចាត់តាំងដែលផ្ទុកគណនីបង្កប់នៅក្នុងពាក្យបញ្ជា shell ទេ។
ឧទាហរណ៍នេះជ្រើស curl ព្រោះវាគាំទ្រអថេរដែលបានបង្ហាញ។ អាសយដ្ឋានពីបញ្ជីប្រូកស៊ី HTTP អាចបំពេញតម្លៃបរិស្ថានទាំងនោះសម្រាប់ផ្លូវ HTTP សាធារណៈ។ ឯកសារប្រតិបត្តិផ្សេងទៀតត្រូវការចំណុចប្រទាក់ប្រូកស៊ីដែលវាគាំទ្រដោយខ្លួនឯង; ជម្រើស cURL របស់ PHP ខ្លួនវាមិនកំណត់កម្មវិធីខាងក្រៅនោះទេ។