လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အဘယ်ကြောင့် FTP_SITE ၏ command ကွပ်မျက်သည်အဘယ်ကြောင့်စံသတ်မှတ်ချက်မဟုတ်သနည်း။

အဘယ်ကြောင့် FTP_SITE ၏ command ကွပ်မျက်သည်အဘယ်ကြောင့်စံသတ်မှတ်ချက်မဟုတ်သနည်း။

gitbox 2025-06-15

PHP PHP ကို ​​အသုံးပြု. FTP လုပ်ငန်းစဉ်တွင် FTP_Site () သည်အငြင်းပွားဖွယ်ရာလုပ်ဆောင်မှုဖြစ်သည်။ developer များက developer များက FTP server သို့ site command များကိုပို့ရန်ခွင့်ပြုသည်။ ထို့ကြောင့် server extension functions များကို ဖွင့်ခြင်း, ဤဆောင်းပါးသည်ဤဖြစ်စဉ်၏အဓိကအကြောင်းရင်းများကိုနက်နက်ရှိုင်းရှိုင်းခွဲခြမ်းစိတ်ဖြာပြီး developer များကဤခန့်မှန်းရခက်သည့်အပြုအမူနှင့်မည်သို့ဆက်ဆံသည်ကိုလေ့လာပါမည်။

site command ကိုယ်နှိုက်အတွက်စံသတ်မှတ်ချက်မရှိပါ

FTP protocol ကို RFC 959 မှသတ်မှတ်သည်, site command ကို "တိုးချဲ့ command" အဖြစ်ခွဲခြားထားသော်လည်း၎င်း၏အပြုအမူနှင့် syntax သည် RFC ၏မဖြစ်မနေသတ်မှတ်ချက်များအတွင်းတွင်ဖြစ်သည်။ အဓိပ်ပါယျမှာ:

  • FTP server software တစ်ခုစီ (Proftpd, VSFTPD, ftpd, ftc. filezilla server စသည်) သည်သင်၏ကိုယ်ပိုင်ဆုံးဖြတ်ချက်ဖြင့်ဆိုဒ်ပညတ်များကိုအထောက်အကူပြုမည်ကိုဆုံးဖြတ်နိုင်သည်။

  • ပံ့ပိုးမှုရှိမရှိဆိုလျှင်ပင်ဆိုဒ်သည်ဆိုဒ်တွင်လက်ခံသည်မှာအလွန်အမင်းကွဲပြားနိုင်သည်။

  • site subcommand အမည်များအတူတူပင်ဖြစ်သော်လည်း parameter သည်အဓိပ္ပာယ်ကောက်ယူခြင်းနှင့်ကွပ်မျက်မှုအကျိုးသက်ရောက်မှုကွဲပြားနိုင်သည်။

ဥပမာအားဖြင့်, အချို့သောဆာဗာများကိုထောက်ခံသည်။

 ftp_site($ftp_conn, "CHMOD 755 /public_html/index.php");

အခြားဆာဗာများသည် အမည်မသိ site command 500 ကိုပြန်ပေးလိမ့်မည်။ chmod subcommand မှအမှားများ။ နောက်ဥပမာတစ်ခု -

 ftp_site($ftp_conn, "UTIME /file.txt 20240607080000");

ဤ command သည် timestamp ကိုအချို့သောဆာဗာများပေါ်တွင် (ဥပမာ Module များပါ 0 င်သည့်) တွင်အချို့သောဆာဗာများပေါ်တွင်အောင်မြင်စွာမွမ်းမံနိုင်သည်။

ခွင့်ပြုချက်များ၏သက်ရောက်မှုနှင့်လုံခြုံရေးမူဝါဒများ၏သက်ရောက်မှု

Subcommand ကိုပစ်မှတ်ဆာဗာတွင်ပံ့ပိုးထားသည့်နေရာတွင်ပင်လျှင် Execute ခွင့်ပြုချက်ကိုချိတ်ဆက်ထားသောအသုံးပြုသူအားအမြဲတမ်းမပေးချေ။ service command များကို default server configurations များစွာတွင် default default အားဖြင့်ပိတ်ထားသည်။ ဥပမာအားဖြင့်အချို့သောဆာဗာများကိုပင်ထောက်ပံ့သည်။

 ftp_site($ftp_conn, "SYMLINK /target /link");

550 ခွင့်ပြုချက်ကိုငြင်းပယ်ခြင်းကဲ့သို့သောအမှားတစ်ခု။ ခွင့်ပြုချက်မလုံလောက်ခြင်းကြောင့်လည်းပြန်လာနိုင်သည်။ ဆိုလိုသည်မှာ PHP ဇာတ်ညွှန်းသည်မတူညီသောဆာဗာများသို့မဟုတ်အသုံးပြုသူများအပေါ်တွင်အလုပ်လုပ်သည်။ ရလဒ်များသည်အလွန်ကွဲပြားနိုင်သည်။

FTP server အကောင်အထည်ဖော်မှုကွဲပြားခြားနားမှု

FTP server ဆော့ (ဖ်) ဝဲ၏ကွဲပြားခြားနားမှုများသည် FTP_Site () ၏ကိုက်ညီမှုမရှိသောအပြုအမူအတွက်အရေးကြီးသောအကြောင်းပြချက်လည်းဖြစ်သည်။ ဤတွင်ဘုံဆော့ဖ်ဝဲအများအပြား၏စွမ်းဆောင်ရည်ကွဲပြားခြားနားမှုများမှာ -

  • Proftpd - အထူးသဖြင့် mod_site_exec ကိုဖွင့်ပြီးနောက်,

  • VSFTPPD : site command များအတွက်ပံ့ပိုးမှုသည်အလွန်အကန့်အသတ်ရှိသည်။

  • Pure-FTPD - အကန့်အသတ်ရှိသော site command များကိုထောက်ပံ့ပေးပြီးအများစုမှာ configuration files များတွင်အတိအလင်းဖွင့်ထားရန်လိုအပ်သည်။

  • FileZilla ဆာဗာ - အချို့သော site command များကိုအကောင်အထည်ဖော်သည်။ သို့သော် command set သည်သေးငယ်ပြီးစာရွက်စာတမ်းများမပြည့်စုံပါ။

  • Windows IIS FTP : ဆိုက်အထောက်အပံ့သည်သုညနီးပါးနီးပါးရှိပြီး command အများစုကိုတိုက်ရိုက်လျစ်လျူရှုထားသည်။

ကွဲပြားခြားနားသောအကောင်အထည်ဖော်မှုနောက်ကွယ်မှဒီဇိုင်းအတွေးအခေါ်ကွဲပြားခြားနားသည်။ အချို့ကလုံခြုံရေးနှင့်အနိမ့်ဆုံးအခွင့်အာဏာ၏အခြေခံမူများကိုလိုက်နာကြပြီးအချို့မှာမူလုပ်ဆောင်ချက်များနှင့်ပြောင်းလွယ်ပြင်လွယ်များအတွက် interfles များပိုမိုများပြားလာသည်။

အန္တရာယ်များကိုရှောင်ရှားရန်နှင့်လိုက်လျောညီထွေဖြစ်ခြင်းကိုတိုးတက်အောင်ဘယ်လိုလုပ်ရမလဲ

FTP_Site () ၏ကျယ်ပြန့်သောမသေချာမရေရာမှုများကြောင့်၎င်းကိုအသုံးပြုသောအခါအထူးသတိထားသင့်သည်။ ဒီနေရာမှာအကြံပြုချက်အချို့ရှိပါတယ်:

  1. site command များပေါ်တွင်အရေးပါသောလုပ်ငန်းများပြီးမြောက်ရန် site command များကိုမှီခိုခြင်းမပြုပါနှင့်

  2. PHP ၏ စံ FTP စစ်ဆင်ရေးများကိုသုံးပါ ။ ဥပမာ - PHP ၏ FTP_CHMOD () PHP သည်အောက်ခြေတွင် site chmod ကိုသုံးနိုင်သည်။

  3. ကြိုတင်ထောက်လှမ်းရေးအထောက်အပံ့စွမ်းရည် - function တစ်ခုသည်အချို့သော site command များကိုပေးပို့ရန်နှင့် script ကိုမဖွင့်မီ၎င်းတို့၏ပြန်လာ status ကိုဖမ်းယူရန်ဒီဇိုင်းပြုလုပ်နိုင်သည်။ ဥပမာအားဖြင့်:

     function site_command_supported($conn, $command) {
        $result = @ftp_site($conn, $command);
        return $result !== false;
    }
    
  4. ဆာဗာအမျိုးအစားများကိုမှတ်တမ်းတင်ခြင်းနှင့်ခွဲခြားခြင်း - 0 န်ဆောင်မှုပေးသည့်ကြိုဆိုသည့်ကြိုဆိုသည့်အချက်အလက်များကို FTP ဆာဗာများဖြင့်ပြန်လည်ရောက်ရှိပါ။

     $welcome = ftp_raw($conn, "SYST");
    // ဆာဗာအမျိုးအစားများခွဲခြမ်းစိတ်ဖြာပါ,အဲဒါကိုသုံးမလားဆိုတာဆုံးဖြတ်ပါ SITE အမိန့်
    
  5. မှတ်တမ်းတင်ထားသောဆာဗာအပြုအမူ - စီးပွားရေးအဆင့်တွင်နေရာချထားမှုတွင်ဆာဗာတစ်ခုစီသည်မျက်စိကန်းသောဖုန်းခေါ်ဆိုမှုများကိုရှောင်ရှားရန်ဘုံဆိုက်များအတွက်အထောက်အပံ့များကိုမှတ်တမ်းတင်သင့်သည်။

ကောက်ချက်

ftp_site () သည်အစွမ်းထက်သော်လည်းအန္တရာယ်ရှိသောကိရိယာတစ်ခုဖြစ်သည်။ ၎င်းသည် FTP protocol ဒီဇိုင်းတွင်ဆာဗာ "အပြုအမူနှင့်အဓိပ္ပါယ်ဖွင့်ဆိုချက်" ကိုဆာဗာ "အပြုအမူအဓိပ္ပါယ်" အပေါ်ထားရှိသော Lawsez-Faire သဘောထားကိုဖော်ထုတ်ပြီးယနေ့ကွန်ယက်ပရိုဂရမ်တွင် "Cross-platform platform consist consist" ၏အဓိကပြ problem နာကိုလည်းဖော်ပြသည်။ အမှန်တကယ်ဖွံ့ဖြိုးတိုးတက်မှုတွင်ကျွန်ုပ်တို့သည်လုပ်ငန်းလည်ပတ်မှုပတ်ဝန်းကျင်ကိုအပြည့်အဝထိန်းချုပ်နိုင်ခြင်းမရှိပါကအပြုအမူအတွက်မသေချာမရေရာသည့်လုပ်ဆောင်မှုများကိုမှီခိုနေရန်ကျွန်ုပ်တို့ရှောင်ရှားသင့်သည်။

အကယ်. သင်သည် site command များကိုအသုံးပြုရန်လိုအပ်ပါကစည်းလုံးညီညွတ်သောဆာဗာဘေးတွင်ဖြန့်ကျက်မှုသတ်မှတ်ချက်မှတဆင့်ခြားနားချက်ကိုလျှော့ချရန်သို့မဟုတ် Control Panel / API ကဲ့သို့သောခေတ်မီသောနည်းလမ်းများဖြင့် FTP Native command များကိုအစားထိုးရန်အကြံပြုသည်။ နောက်ဆုံးတွင် FTP_Site ($ CON, "unt /us/local/bin/bin/ban/bin/ban/bin/backup.sh") ကဲ့သို့ရိုးရှင်းသောစစ်ဆင်ရေးတစ်ခု, အကယ်. အပြုအမူသည်မကိုက်ညီပါက၎င်းသည် System Maintory အတွက်အိပ်မက်ဆိုးတစ်ခုဖြစ်လာလိမ့်မည်။

ဥပမာအပြည့်အစုံကိုကြည့်ပါ။

 $ftp_conn = ftp_connect("ftp.gitbox.net");
ftp_login($ftp_conn, "username", "password");
ftp_site($ftp_conn, "CHMOD 755 /public_html/test.php");
ftp_close($ftp_conn);

FTP.gitbox.net ၏ FTP 0 န်ဆောင်မှုကိုအပြည့်အဝထိန်းချုပ်နိုင်သည့်အချိန်မှသာအထက်ပါကုဒ်ကိုယုံကြည်စိတ်ချစွာဖြင့်အသုံးပြုနိုင်သည်။ ဒီလိုမှမဟုတ်ရင်အမှားရိုက်ကူးခြင်းနှင့်သစ်ထုတ်လုပ်ရေးယန္တရားများကိုထည့်သွင်းရန်သတိရပါ။