PHP ကိုအသုံးပြုပြီး File Upload function ကိုတည်ဆောက်ရာတွင်ကျွန်ုပ်တို့သည်များသောအားဖြင့် upload target directory တည်ရှိမှုရှိ, မရှိကိုစစ်ဆေးရန်လိုအပ်သည်။ is_dir () သည်ဤစစ်ဆေးမှုကိုလုပ်ဆောင်ရန်ဘုံလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည် is_dir () ကို အသုံးပြုသောအခါသံသယများအပေါ်အချို့သံသယများကြုံတွေ့ရလိမ့်မည် ။ သို့မဟုတ် upload ပျက်ကွက်ခြင်း, လမ်းညွှန်သည်ခွင့်ပြုချက်မရှိပါ။ ဤဆောင်းပါးသည်တင်ထားသောလမ်းညွှန်ကိုစစ်ဆေးရန်အတွက်လမ်းညွှန်ခွင့်ပြုချက်များနှင့်လမ်းကြောင်းဆက်တင်များကိုမည်သို့အတည်ပြုရမည်ကိုရှု ထော င့်အမျိုးမျိုးမှခွဲခြမ်းစိတ်ဖြာလိမ့်မည်။
is_dir () သည် PHP မှပေးသော built-in function တစ်ခုဖြစ်သည်။ ၎င်းသည် file path သည်လမ်းညွှန်တစ်ခုရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -
bool is_dir(string $filename)
Return Value သည် Boolean ဖြစ်ပြီး $ filename တည်ရှိပြီး directory တစ်ခုဖြစ်ပါက မှန်မှန်ကန်ကန်ဖြစ်သည် ။ မဟုတ်ရင် မှားယွင်းတဲ့ ။
အစပြုသူများစွာသည်လမ်းညွှန်များကိုစစ်ဆေးရန်ဆွေမျိုးလမ်းကြောင်းများကိုအသုံးပြုလေ့ရှိသည်။
if (is_dir('uploads/')) {
// ...
}
ဤသည်မှာအချို့သောကိစ္စရပ်များတွင်ဖြစ်နိုင်ချေရှိသောကြောင့်လက်ရှိ script execution လမ်းကြောင်းကိုဖြစ်ပေါ်နိုင်သည်။ ပိုမိုလုံခြုံသောချဉ်းကပ်မှုသည် ___ __Dir__ (သို့) realute လမ်းကြောင်းကိုအသုံးပြုရန်ဖြစ်သည်။
$uploadDir = __DIR__ . '/uploads/';
if (is_dir($uploadDir)) {
// လုံခြုံပြီးယုံကြည်စိတ်ချရသော directory စစ်ဆေးခြင်း
}
သို့မဟုတ်:
$uploadDir = realpath(__DIR__ . '/uploads/');
if ($uploadDir !== false && is_dir($uploadDir)) {
// အဆိုပါလမ်းညွှန်တည်ရှိ
}
is_dir () လမ်းကြောင်းသည်မလျော်ကန်စွာစူးစူးစိုက်ကြည့်နေလျှင်သို့မဟုတ်တရားမ 0 င်စာလုံးများကိုအသုံးပြုပါက (အထူးသဖြင့် Windows နှင့် Linux တို့အကြား switching) ကို အသုံးပြုသည်။
အချို့သောစနစ်များတွင်တရုတ်သို့မဟုတ်လမ်းကြောင်းရှိတရုတ်သို့မဟုတ်အထူးဇာတ်ကောင်များရှိခြင်းသည်လမ်းကြောင်း resolution ကိုကျရှုံးစေနိုင်သည်။ ဖိုင်တွဲများကိုအမည်ပေးရန်အင်္ဂလိပ်စာများနှင့် underscores များကိုအသုံးပြုရန်အကြံပြုသည်။
IS_DIR () သည် လမ်းညွှန်တည်ရှိခြင်းရှိ, မရှိကိုသာစစ်ဆေးနိုင်သည်။ ဖိုင်များကိုတင်သည့်အခါသင်အတည်ပြုရန်လိုအပ်သည်။
အဆိုပါလမ်းညွှန်တည်ရှိ ( is_dir () ပြန်လာပြီ )
PHP လုပ်ငန်းစဉ်သည်ဤလမ်းညွှန်သို့ခွင့်ပြုချက်ကိုရေးပါ ( IS_WRITTTITE () ကိုသုံးနိုင်သည်)
$uploadDir = __DIR__ . '/uploads/';
if (!is_dir($uploadDir)) {
die('အဆိုပါလမ်းညွှန်မတည်ရှိပါဘူး');
}
if (!is_writable($uploadDir)) {
die('လမ်းညွှန်မဟုတ်သောလမ်းညွှန်,ကျေးဇူးပြုပြီးခွင့်ပြုချက်ဆက်တင်ကိုစစ်ဆေးပါ');
}
Linux System များတွင်ခွင့်ပြုချက်ကိုပြုပြင်ရန်အောက်ပါ command ကိုသုံးနိုင်သည်။
chmod 755 uploads/
chown www-data:www-data uploads/
၎င်းတို့အနက် www-data သည် ဆာဗာပတ် 0 န်းကျင်ပေါ် မူတည်. PHP PHPM သည် Php-FPM အသုံးပြုသူကဲ့သို့ Php-FPM အသုံးပြုသူကဲ့သို့ Php-FPM အသုံးပြုသူကဲ့သို့ Php-FPM အသုံးပြုသူကဲ့သို့) ပိုင်ဆိုင်သည်။
ကွဲပြားခြားနားသော Execution ပတ် 0 န်းကျင်တွင် (command line, apache, nginx), __Dir__ နှင့်လက်ရှိအလုပ်လုပ်နေသောလမ်းကြောင်းသည်ကွဲပြားခြားနားနိုင်သည်။ Debugging Path ides isions နာများကိုဖြေရှင်းရန်သင်အောက်ပါကုဒ်ကိုသုံးနိုင်သည်။
echo 'လက်ရှိအလုပ်လုပ်လမ်းညွှန်:' . getcwd() . PHP_EOL;
echo 'လက်ရှိဖိုင်လမ်းကြောင်း:' . __FILE__ . PHP_EOL;
echo 'Directory Reselute Path ကိုတင်ပါ:' . realpath(__DIR__ . '/uploads/') . PHP_EOL;
အချို့သော developer အချို့သည် upload လမ်းကြောင်းကိုအတည်ပြုသည့် "URL" နှင့် "ဖိုင်လမ်းကြောင်း" အကြားခြားနားချက်ကိုရှုပ်ထွေးစေသည်။ ဥပမာအားဖြင့်, အောက်ပါစာအရေးအသားနည်းလမ်းမှားသည် -
// အမှားဥပမာ:သေတမ်းစာ URL လမ်းကြောင်းအဖြစ်ဆက်ဆံပါ
$uploadDir = 'https://m66.net/uploads/';
if (is_dir($uploadDir)) {
// ထာဝရပြန်လာပါ false
}
is_dir () ကို URLs အတွက်အသုံးမပြုပါ, ဆာဗာ၏ local file system သို့လမ်းကြောင်းများအတွက်သာအသုံးပြုနိုင်သည်။ သင် CDN သို့မဟုတ်ဝေးလံခေါင်သီသောသိုလှောင်မှုကိုအသုံးပြုပါကဝေးလံခေါင်သီသော directory ကို API သို့မဟုတ်အခြားနည်းလမ်းဖြင့်အတည်ပြုရန်လိုအပ်သည်။
မှန်ကန်သောနည်းလမ်းမှာဆာဗာဒေသဆိုင်ရာလမ်းကြောင်းကိုအသုံးပြုရန်ဖြစ်သည်။
$uploadDir = $_SERVER['DOCUMENT_ROOT'] . '/uploads/';
ဤမြေပုံများ / အပ်လုဒိုများ / URL တွင် / var / www / html / upload ကဲ့သို့သောအမှန်တကယ်ဖိုင်စနစ်သို့လမ်းကြောင်းသို့ / uplative သို့သွားပါ။
upload လမ်းညွှန်တည်ရှိခြင်းရှိမရှိကိုစစ်ဆေးရန် is_dir () ကိုအသုံးပြုခြင်းသည်လုံခြုံစိတ်ချရသောဖိုင်များရှိသည့်ပထမခြေလှမ်းဖြစ်သည်, သို့သော်လုပ်ငန်းစဉ်တစ်ခုလုံးအား 0 န်ဆောင်မှုပေးရန်လမ်းကြောင်း resolution နှင့်ခွင့်ပြုချက်စစ်ဆေးမှုများနှင့်ပူးပေါင်းရန်လိုအပ်သည်။ အောက်ပါအချက်များကိုသတိရပါ။
အကြွင်းမဲ့အာဏာလမ်းကြောင်းများကိုအသုံးပြုခြင်းသည်လမ်းကြောင်းများထက် ပို. ကောင်းသည်
ကြောင်း is_dir () နှင့် is_wractivats () ကို တစ်ချိန်တည်းမှာကျေနပ်မှုရှိကြောင်းစစ်ဆေးပါ
URLs များကို is_dir သို့ဖိုင်လမ်းကြောင်းများအဖြစ်ဖြတ်သန်းခြင်းကိုရှောင်ပါ။
__Dir__ , realpath () နှင့် getcwd တို့ပါသော Debug Path ides များကိုကူညီပါ ()
Upload လမ်းညွှန်သည် server ရေးခွင့်ခွင့်ပြုထားကြောင်းသေချာပါစေ
၎င်းသည်လမ်းကြောင်းများသို့မဟုတ်ခွင့်ပြုချက်များကြောင့်ဖြစ်ပေါ်လာသောပျက်ကွက်မှုများကြောင့်တင်ခြင်းကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီး upload လုပ်ဆောင်ချက်များတည်ငြိမ်မှုကိုတိုးတက်စေသည်။