လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> uploaded directory ကိုစစ်ဆေးရန် IS_DIR () function ကိုအသုံးပြုသည့်အခါလမ်းညွှန်ခွင့်ပြုချက်နှင့်လမ်းကြောင်းဆက်တင်များမှန်ကန်ကြောင်းမည်သို့အတည်ပြုရမည်နည်း။

uploaded directory ကိုစစ်ဆေးရန် IS_DIR () function ကိုအသုံးပြုသည့်အခါလမ်းညွှန်ခွင့်ပြုချက်နှင့်လမ်းကြောင်းဆက်တင်များမှန်ကန်ကြောင်းမည်သို့အတည်ပြုရမည်နည်း။

M66 2025-06-22

PHP ကိုအသုံးပြုပြီး File Upload function ကိုတည်ဆောက်ရာတွင်ကျွန်ုပ်တို့သည်များသောအားဖြင့် upload target directory တည်ရှိမှုရှိ, မရှိကိုစစ်ဆေးရန်လိုအပ်သည်။ is_dir () သည်ဤစစ်ဆေးမှုကိုလုပ်ဆောင်ရန်ဘုံလုပ်ဆောင်မှုတစ်ခုဖြစ်သည်။ သို့သော် developer များစွာသည် is_dir () ကို အသုံးပြုသောအခါသံသယများအပေါ်အချို့သံသယများကြုံတွေ့ရလိမ့်မည် သို့မဟုတ် upload ပျက်ကွက်ခြင်း, လမ်းညွှန်သည်ခွင့်ပြုချက်မရှိပါ။ ဤဆောင်းပါးသည်တင်ထားသောလမ်းညွှန်ကိုစစ်ဆေးရန်အတွက်လမ်းညွှန်ခွင့်ပြုချက်များနှင့်လမ်းကြောင်းဆက်တင်များကိုမည်သို့အတည်ပြုရမည်ကိုရှု ထော င့်အမျိုးမျိုးမှခွဲခြမ်းစိတ်ဖြာလိမ့်မည်။

1 ။ is_dir () function ကိုမိတ်ဆက်

is_dir () သည် PHP မှပေးသော built-in function တစ်ခုဖြစ်သည်။ ၎င်းသည် file path သည်လမ်းညွှန်တစ်ခုရှိမရှိဆုံးဖြတ်ရန်အသုံးပြုသည်။ အခြေခံ syntax သည်အောက်ပါအတိုင်းဖြစ်သည် -

 bool is_dir(string $filename)

Return Value သည် Boolean ဖြစ်ပြီး $ filename တည်ရှိပြီး directory တစ်ခုဖြစ်ပါက မှန်မှန်ကန်ကန်ဖြစ်သည် ။ မဟုတ်ရင် မှားယွင်းတဲ့

2 ။ လမ်းကြောင်းကိုသတ်မှတ်ရန်မှန်ကန်သောနည်းလမ်း

1 ။ ဆွေမျိုးလမ်းကြောင်းများအစားအကြွင်းမဲ့လမ်းကြောင်းများကိုသုံးပါ

အစပြုသူများစွာသည်လမ်းညွှန်များကိုစစ်ဆေးရန်ဆွေမျိုးလမ်းကြောင်းများကိုအသုံးပြုလေ့ရှိသည်။

 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) ကို အသုံးပြုသည်။

2 ။ လမ်းကြောင်းအတွက်တရုတ်သို့မဟုတ်အထူးအက္ခရာများကိုရှောင်ကြဉ်ပါ

အချို့သောစနစ်များတွင်တရုတ်သို့မဟုတ်လမ်းကြောင်းရှိတရုတ်သို့မဟုတ်အထူးဇာတ်ကောင်များရှိခြင်းသည်လမ်းကြောင်း resolution ကိုကျရှုံးစေနိုင်သည်။ ဖိုင်တွဲများကိုအမည်ပေးရန်အင်္ဂလိပ်စာများနှင့် underscores များကိုအသုံးပြုရန်အကြံပြုသည်။

3 ။ လမ်းညွှန်ခွင့်ပြုချက်ကိုအတည်ပြုပါ

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 အသုံးပြုသူကဲ့သို့) ပိုင်ဆိုင်သည်။

4 ။ PHP scripts ၏ကွပ်မျက်ပတ်ဝန်းကျင်ကိုအတည်ပြုပါ

ကွဲပြားခြားနားသော 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;

5 ။ URL နှင့် directory အကြားဆက်နွယ်မှုနှင့်ပတ်သက်သောအမှားအယွင်းများ

အချို့သော 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 သို့သွားပါ။

6 ။ အကျဉ်းချုပ်

upload လမ်းညွှန်တည်ရှိခြင်းရှိမရှိကိုစစ်ဆေးရန် is_dir () ကိုအသုံးပြုခြင်းသည်လုံခြုံစိတ်ချရသောဖိုင်များရှိသည့်ပထမခြေလှမ်းဖြစ်သည်, သို့သော်လုပ်ငန်းစဉ်တစ်ခုလုံးအား 0 န်ဆောင်မှုပေးရန်လမ်းကြောင်း resolution နှင့်ခွင့်ပြုချက်စစ်ဆေးမှုများနှင့်ပူးပေါင်းရန်လိုအပ်သည်။ အောက်ပါအချက်များကိုသတိရပါ။

  • အကြွင်းမဲ့အာဏာလမ်းကြောင်းများကိုအသုံးပြုခြင်းသည်လမ်းကြောင်းများထက် ပို. ကောင်းသည်

  • ကြောင်း is_dir () နှင့် is_wractivats () ကို တစ်ချိန်တည်းမှာကျေနပ်မှုရှိကြောင်းစစ်ဆေးပါ

  • URLs များကို is_dir သို့ဖိုင်လမ်းကြောင်းများအဖြစ်ဖြတ်သန်းခြင်းကိုရှောင်ပါ။

  • __Dir__ , realpath () နှင့် getcwd တို့ပါသော Debug Path ides များကိုကူညီပါ ()

  • Upload လမ်းညွှန်သည် server ရေးခွင့်ခွင့်ပြုထားကြောင်းသေချာပါစေ

၎င်းသည်လမ်းကြောင်းများသို့မဟုတ်ခွင့်ပြုချက်များကြောင့်ဖြစ်ပေါ်လာသောပျက်ကွက်မှုများကြောင့်တင်ခြင်းကိုထိရောက်စွာရှောင်ရှားနိုင်ပြီး upload လုပ်ဆောင်ချက်များတည်ငြိမ်မှုကိုတိုးတက်စေသည်။