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 သည် အပ်ပလီကေးရှင်း၏ လက်ရှိ output ကိုင်တွယ်မှုမှ လာပါသည်။ လွှင့်တင်မှု မအောင်မြင်ခြင်းကို စစ်ဆေးပါ၊ ပိုက်များကို စီမံပြီး ထိုဘဝသံသရာဖြင့် ပရိုစက်စ်ကို ပိတ်ပါ။
array_replace(getenv(), ...) မိဘပတ်ဝန်းကျင်ကို ထိန်းသိမ်းပြီး ကလိုင်းအတွက် ဤတန်ဖိုးနှစ်ခုကို အစားထိုးပါသည်။ အမွေဆက်ခံစာလုံးကြီး ပရော့ဆီနှင့် ရှောင်ကွင်းပြောင်းလဲကိန်းများကို ရည်ရွယ်ထားသော လမ်းကြောင်းကို ပြောင်းနိုင်သည့်အခါ ပြန်လည်စစ်ဆေးပါ။
အငြင်းအခုံအခင်းသည် shell အား အထောက်အထား၏ ampersand၊ ဒေါ်လာသင်္ကေတများ သို့မဟုတ် ကွက်လပ်များကို အဓိပ္ပာယ်ဖွင့်ဆိုခြင်းမှ တားဆီးပါသည်။ shell ကွန်မန့်တွင် အကောင့်သယ်ဆောင်သော သတ်မှတ်ချက် ထည့်သွင်းထားခြင်း မရှိပါ။
ဤဥပမာသည် ပြသထားသော ပြောင်းလဲကိန်းများကို ပံ့ပိုးသောကြောင့် curl ကို ရွေးချယ်ပါသည်။ HTTP ပရော့ဆီစာရင်းမှ လိပ်စာတစ်ခုသည် အများပြည်သူ HTTP လမ်းကြောင်းအတွက် ထိုပတ်ဝန်းကျင်တန်ဖိုးများကို ဖြည့်နိုင်ပါသည်။ အခြားအလုပ်ဆောင်နိုင်သောဖိုင်သည် ၎င်း၏ ကိုယ်ပိုင်ပံ့ပိုးထားသော ပရော့ဆီအင်တာဖေ့စ် လိုအပ်ပါသည်၊ PHP ၏ ကိုယ်ပိုင် cURL ရွေးချယ်စရာများသည် ထိုပြင်ပပရိုဂရမ်ကို ပြင်ဆင်သတ်မှတ်ခြင်း မရှိပါ။