"fastcgi_split_path_info" ကို အသုံးပြု၍ URL ၏အစိတ်အပိုင်းများကို ပိုင်းခြားပြီး PATH_INFO ပတ်၀န်းကျင် variable ကို သတ်မှတ်ခြင်းဖြင့် PHP-FPM သို့ ထပ်ဆင့်ပေးပို့ခြင်းတွင် nginx ဖွဲ့စည်းမှုပုံစံများတွင် တိုက်ခိုက်မှုဖြစ်နိုင်သော်လည်း "try_files $fastcgi_script_name" ကို အသုံးပြု၍ ဖိုင်တည်ရှိမှုကို ဦးစွာစစ်ဆေးခြင်းမပြုဘဲ၊ ညွှန်ကြားချက် သို့မဟုတ် “if (!-f $) document_root$fastcgi_script_name)”။ ပြဿနာလည်း ရှိတယ်။
တည်နေရာ ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^ (/ \ PHP) ။ (/.*) $;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass php:9000;
}
ဤစာမျက်နှာများရှိ ဖြန့်ဖြူးရေးကိရိယာအစုံတွင် ပြဿနာဖြေရှင်းချက်ကို သင်ခြေရာခံနိုင်သည်-
try_files $fastcgi_script_name =404;
ဖိုင်တစ်ခုရှိ pointers များကို ကိုင်တွယ်ရာတွင် အမှားအယွင်းတစ်ခုကြောင့် ဖြစ်ရခြင်းဖြစ်ပါသည်။
fastcgi_split_path_info လမ်းညွှန်ချက်တွင် လိုင်းအသစ်-အကဲဆတ်သော ပုံမှန်အသုံးအနှုန်းကို အသုံးပြု၍ ဇာတ်ညွှန်းလမ်းကြောင်းကို ပိုင်းခြားသတ်မှတ်ပေးမည်ဆိုပါက (ဥပမာ၊ ဥပမာများစွာသည် "^.+?\.php)(/.*)$" ကို အသုံးပြုရန် အကြံပြုထားသည်)၊ ထို့နောက် တိုက်ခိုက်သူမှ သေချာစေနိုင်သည်။ ဗလာတန်ဖိုးကို PATH_INFO ပတ်၀န်းကျင် ကိန်းရှင်သို့ ရေးထားသည်။ ဒီအမှုမှာ နောက်ထပ် သေဒဏ်ပေးခံရတယ်။
အချို့သောနည်းဖြင့် ဖော်မတ်ပြုလုပ်ထားသည့် URL တစ်ခုကို တောင်းဆိုခြင်းဖြင့်၊ တိုက်ခိုက်သူသည် path_info ညွှန်ပြချက်ကို “_fcgi_data_seg” ဖွဲ့စည်းပုံ၏ ပထမဘိုက်သို့ ကူးပြောင်းနိုင်ပြီး၊ ဤဘိုက်သို့ သုညတစ်ခုရေးခြင်းသည် “char* pos” ၏ ရွေ့လျားမှုကို ဦးတည်စေမည်ဖြစ်သည်။ ယခင်တည်ရှိသော မမ်မိုရီဧရိယာသို့ ညွှန်ပြသည်။ FCGI_PUTENV ဟုခေါ်သော နောက်တစ်ခုသည် တိုက်ခိုက်သူထိန်းချုပ်နိုင်သည့်တန်ဖိုးဖြင့် ဤမှတ်ဉာဏ်အတွင်းရှိ ဒေတာကို ထပ်ရေးပါမည်။ သတ်မှတ်ထားသော မှတ်ဉာဏ်သည် အခြားသော FastCGI ကိန်းရှင်များ၏ တန်ဖိုးများကိုလည်း သိမ်းဆည်းထားပြီး ၎င်းတို့၏ အချက်အလက်များကို ရေးသားခြင်းဖြင့်၊ တိုက်ခိုက်သူသည် စိတ်ကူးယဉ်သော PHP_VALUE ကိန်းရှင်တစ်ခုကို ဖန်တီးနိုင်ပြီး ၎င်းတို့၏ကုဒ်ကို အကောင်အထည်ဖော်နိုင်မည်ဖြစ်သည်။
source: opennet.ru