လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> FTP_RAWLIST ကိုအလိုအလျောက်ဖြန့်ကျက်သော scripts ရေးရန်ပေါင်းစပ်ခြင်း

FTP_RAWLIST ကိုအလိုအလျောက်ဖြန့်ကျက်သော scripts ရေးရန်ပေါင်းစပ်ခြင်း

gitbox 2025-06-17

1 ။ ပြင်ဆင်မှု

ပထမ ဦး စွာသင်၏ PHP ပတ် 0 န်းကျင်သည် FTP လုပ်ဆောင်မှုများကိုအထောက်အကူပြုကြောင်းသေချာစေရန်လိုအပ်သည်။ ၎င်းကိုဖွင့်ထားရှိမရှိစစ်ဆေးနိုင်သည်။

 <span><span><span class="hljs-title function_ invoke__">phpinfo</span></span><span>();
</span></span>

FTP အပိုင်းကို FTP extension ကိုသေချာအောင်လုပ်ပါ။ မဖွင့်ပါက php.ini ဖိုင်ကိုပြုပြင်ခြင်းဖြင့် extension ကိုဖွင့်နိုင်သည်။

 <span><span><span class="hljs-attr">extension</span></span><span>=ftp
</span></span>

ထို့နောက်သင်၏ဝဘ်ဆာဗာကိုပြန်လည်စတင်ပါ။

2 ။ FTP server ကိုဆက်သွယ်ပါ

PHP မှပေးသော FTP_Connect နှင့် FTP_Login လုပ်ဆောင်ချက်များကို အသုံးပြု. FTP server နှင့်ချိတ်ဆက်ရန်လိုအပ်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$ftp_server</span></span><span> = </span><span><span class="hljs-string">"ftp.example.com"</span></span><span>; </span><span><span class="hljs-comment">// FTP ဆာဗာလိပ်စာ</span></span><span>
</span><span><span class="hljs-variable">$ftp_user_name</span></span><span> = </span><span><span class="hljs-string">"username"</span></span><span>;     </span><span><span class="hljs-comment">// FTP အသုံးပြုသူ</span></span><span>
</span><span><span class="hljs-variable">$ftp_user_pass</span></span><span> = </span><span><span class="hljs-string">"password"</span></span><span>;     </span><span><span class="hljs-comment">// FTP လှျို့ဝှက်စကား</span></span><span>

</span><span><span class="hljs-comment">// ချိတ်ဆက်ပါ FTP ဆာဆာ</span></span><span>
</span><span><span class="hljs-variable">$conn_id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_server</span></span><span>);

</span><span><span class="hljs-comment">// လော့ဂ်အင် FTP ဆာဆာ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (@</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$ftp_user_name</span></span><span>, </span><span><span class="hljs-variable">$ftp_user_pass</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"成功ချိတ်ဆက်ပါ <span class="hljs-subst">$ftp_server</span></span></span><span>\n";
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法ချိတ်ဆက်ပါ <span class="hljs-subst">$ftp_server</span></span></span><span>\n";
    </span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

အထက်ပါကုဒ်သည် FTP_Connect မှတစ်ဆင့် FTP server သို့ဆက်သွယ်ပြီး authentication အတွက် FTP_LOGIN ကို အသုံးပြုသည်။

3 ။ File နှင့် Directory Lists များကိုရယူရန် FTP_RAWLIST ကို သုံးပါ

ftp_Rawlist function သည်ဆာဗာမှသတ်မှတ်ထားသောမူရင်းလမ်းညွှန်များကိုပြန်ပို့သည်။ ဤစာရင်းတွင်ဖိုင်သို့မဟုတ်လမ်းညွှန်တစ်ခုစီအတွက်ခွင့်ပြုချက်များ, အရွယ်အစား, နေ့စွဲ, နေ့စွဲစသည့်အရာတစ်ခုစီအတွက်အသေးစိတ်အချက်အလက်များပါ 0 င်သည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// root directory ၏ဖိုင်စာရင်းကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$remote_dir</span></span><span> = </span><span><span class="hljs-string">"/"</span></span><span>;
</span><span><span class="hljs-variable">$file_list</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_rawlist</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_dir</span></span><span>);

</span><span><span class="hljs-comment">// ရရှိသောဖိုင်စာရင်းကို output</span></span><span>
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$file_list</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

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

 <span><span>Array
(
    [0] =&gt; drwxr-xr-x   2 1000 1000  4096 May  7 12:30 public_html
    [1] =&gt; -rw-r--r--   1 1000 1000  2048 May  7 12:35 index.php
    [2] =&gt; -rw-r--r--   1 1000 1000  1024 May  7 12:36 style.css
)
</span></span>

ဤအချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းအားဖြင့်ဖိုင်တစ်ခုရှိပြီးသားဖိုင်တည်ရှိမှုရှိမရှိစစ်ဆေးရန် scripts များကိုရေးရန်ရေးနိုင်သည်။

4 ။ ဒေသခံနှင့်ဝေးလံခေါင်သီသောဖိုင်များကိုနှိုင်းယှဉ်ပါ

ကျွန်ုပ်တို့တွင်ဒေသခံဖြန့်ကျက်ဖိုင်တွဲတစ်ခုရှိပြီး၎င်းကိုဝေးလံခေါင်သီသောဆာဗာတွင်ဖိုင်များနှင့်နှိုင်းယှဉ်လိုသည်ဆိုပါစို့။ ကျွန်ုပ်တို့သည် FTP_RAWLITS ကို အဝေးမှဖိုင်အရွယ်အစားနှင့်အရွယ်အစားကိုရရှိရန်နှင့် local file ၏သတင်းအချက်အလက်များကိုတင်ရန်ဆုံးဖြတ်ရန်ညွှန်ကြားရန်ဒေသခံဖိုင်၏အချက်အလက်များကိုတင်ပါ။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// ဒေသခံဖိုင်လမ်းကြောင်း</span></span><span>
</span><span><span class="hljs-variable">$local_file</span></span><span> = </span><span><span class="hljs-string">'path/to/local/index.php'</span></span><span>;
</span><span><span class="hljs-variable">$remote_file</span></span><span> = </span><span><span class="hljs-string">'index.php'</span></span><span>;

</span><span><span class="hljs-comment">// ဒေသဆိုင်ရာဖိုင်များ၏ပြုပြင်မွမ်းမံချိန်ကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$local_file_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filemtime</span></span><span>(</span><span><span class="hljs-variable">$local_file</span></span><span>);

</span><span><span class="hljs-comment">// ဝေးလံခေါင်သီသောဖိုင်များနှင့်ပတ်သက်သောအသေးစိတ်အချက်အလက်များကိုရယူပါ</span></span><span>
</span><span><span class="hljs-variable">$remote_file_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_rawlist</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>);
</span><span><span class="hljs-variable">$remote_file_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">" "</span></span><span>, </span><span><span class="hljs-variable">$remote_file_info</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]);
</span><span><span class="hljs-variable">$remote_file_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtotime</span></span><span>(</span><span><span class="hljs-variable">$remote_file_info</span></span><span>[</span><span><span class="hljs-number">5</span></span><span>] . </span><span><span class="hljs-string">' '</span></span><span> . </span><span><span class="hljs-variable">$remote_file_info</span></span><span>[</span><span><span class="hljs-number">6</span></span><span>] . </span><span><span class="hljs-string">' '</span></span><span> . </span><span><span class="hljs-variable">$remote_file_info</span></span><span>[</span><span><span class="hljs-number">7</span></span><span>]);

</span><span><span class="hljs-comment">// ဖိုင်အချိန်ကိုနှိုင်းယှဉ်,တင်ရန်ရှိမရှိဆုံးဖြတ်ပါ</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$local_file_time</span></span><span> &gt; </span><span><span class="hljs-variable">$remote_file_time</span></span><span>) {
    </span><span><span class="hljs-comment">// ဖိုင်တင်ပါ</span></span><span>
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_put</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>, FTP_BINARY)) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"စာချုပ်စာတမ်း <span class="hljs-subst">$local_file</span></span></span><span> အောင်မြင်စွာတင်ပါ!\n";
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"စာချုပ်စာတမ်း <span class="hljs-subst">$local_file</span></span></span><span> တင်ပါးမအောင်မြင်ပါ!\n";
    }
} </span><span><span class="hljs-keyword">else</span></span><span> {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"远程စာချုပ်စာတမ်း已经是最新的,မလိုအပ်ပါ。\n"</span></span><span>;
}
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5 ။ အလိုအလျောက်ဖြန့်ကျက်သော scripts

ယခုကျွန်ုပ်တို့သည်အစိတ်အပိုင်းများအားလုံးကိုပေါင်းစပ်ပြီးအလိုအလျောက်ဖြန့်ကျက်သော script ကိုရေးပါ။ ဤ script သည်မည်သည့်ဖိုင်များကို update လုပ်ပြီးဝေးလံခေါင်သီသောဆာဗာသို့ upload လုပ်ရမည်ကိုအလိုအလျောက်ဆုံးဖြတ်လိမ့်မည်။

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$ftp_server</span></span><span> = </span><span><span class="hljs-string">"ftp.example.com"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user_name</span></span><span> = </span><span><span class="hljs-string">"username"</span></span><span>;
</span><span><span class="hljs-variable">$ftp_user_pass</span></span><span> = </span><span><span class="hljs-string">"password"</span></span><span>;

</span><span><span class="hljs-comment">// ချိတ်ဆက်ပါ FTP ဆာဆာ</span></span><span>
</span><span><span class="hljs-variable">$conn_id</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_connect</span></span><span>(</span><span><span class="hljs-variable">$ftp_server</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (!@</span><span><span class="hljs-title function_ invoke__">ftp_login</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$ftp_user_name</span></span><span>, </span><span><span class="hljs-variable">$ftp_user_pass</span></span><span>)) {
    </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"无法ချိတ်ဆက်ပါ <span class="hljs-subst">$ftp_server</span></span></span><span>\n";
    </span><span><span class="hljs-keyword">exit</span></span><span>;
}

</span><span><span class="hljs-comment">// 本地部署စာချုပ်စာတမ်း夹</span></span><span>
</span><span><span class="hljs-variable">$local_dir</span></span><span> = </span><span><span class="hljs-string">"path/to/local/files/"</span></span><span>;
</span><span><span class="hljs-variable">$remote_dir</span></span><span> = </span><span><span class="hljs-string">"/"</span></span><span>;

</span><span><span class="hljs-comment">// 获取本地စာချုပ်စာတမ်း列表</span></span><span>
</span><span><span class="hljs-variable">$local_files</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">RecursiveIteratorIterator</span></span><span>(
    </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">RecursiveDirectoryIterator</span></span><span>(</span><span><span class="hljs-variable">$local_dir</span></span><span>),
    </span><span><span class="hljs-title class_">RecursiveIteratorIterator</span></span><span>::</span><span><span class="hljs-variable constant_">LEAVES_ONLY</span></span><span>
);

</span><span><span class="hljs-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$local_files</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$local_file</span></span><span>) {
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$local_file</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">isDir</span></span><span>()) {
        </span><span><span class="hljs-keyword">continue</span></span><span>;
    }

    </span><span><span class="hljs-comment">// ဆွေမျိုးလမ်းကြောင်းကိုရယူပါ</span></span><span>
    </span><span><span class="hljs-variable">$relative_path</span></span><span> = </span><span><span class="hljs-title function_ invoke__">substr</span></span><span>(</span><span><span class="hljs-variable">$local_file</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getRealPath</span></span><span>(), </span><span><span class="hljs-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$local_dir</span></span><span>));

    </span><span><span class="hljs-comment">// ဝေးလံခေါင်သီသောဖိုင်များနှင့်ပတ်သက်သောအသေးစိတ်အချက်အလက်များကိုရယူပါ</span></span><span>
    </span><span><span class="hljs-variable">$remote_file</span></span><span> = </span><span><span class="hljs-variable">$remote_dir</span></span><span> . </span><span><span class="hljs-variable">$relative_path</span></span><span>;
    </span><span><span class="hljs-variable">$remote_file_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">ftp_rawlist</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>);
    
    </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$remote_file_info</span></span><span>) {
        </span><span><span class="hljs-comment">// စာချုပ်စာတမ်း已存在,အချိန်ကိုနှိုင်းယှဉ်</span></span><span>
        </span><span><span class="hljs-variable">$remote_file_info</span></span><span> = </span><span><span class="hljs-title function_ invoke__">explode</span></span><span>(</span><span><span class="hljs-string">" "</span></span><span>, </span><span><span class="hljs-variable">$remote_file_info</span></span><span>[</span><span><span class="hljs-number">0</span></span><span>]);
        </span><span><span class="hljs-variable">$remote_file_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">strtotime</span></span><span>(</span><span><span class="hljs-variable">$remote_file_info</span></span><span>[</span><span><span class="hljs-number">5</span></span><span>] . </span><span><span class="hljs-string">' '</span></span><span> . </span><span><span class="hljs-variable">$remote_file_info</span></span><span>[</span><span><span class="hljs-number">6</span></span><span>] . </span><span><span class="hljs-string">' '</span></span><span> . </span><span><span class="hljs-variable">$remote_file_info</span></span><span>[</span><span><span class="hljs-number">7</span></span><span>]);
        </span><span><span class="hljs-variable">$local_file_time</span></span><span> = </span><span><span class="hljs-title function_ invoke__">filemtime</span></span><span>(</span><span><span class="hljs-variable">$local_file</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getRealPath</span></span><span>());

        </span><span><span class="hljs-comment">// 如果本地စာချုပ်စာတမ်း较新,တင်ပါ</span></span><span>
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$local_file_time</span></span><span> &gt; </span><span><span class="hljs-variable">$remote_file_time</span></span><span>) {
            </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_put</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getRealPath</span></span><span>(), FTP_BINARY)) {
                </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"စာချုပ်စာတမ်း <span class="hljs-subst">$relative_path</span></span></span><span> အောင်မြင်စွာအသစ်ပြောင်းခြင်း!\n";
            } </span><span><span class="hljs-keyword">else</span></span><span> {
                </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"စာချုပ်စာတမ်း <span class="hljs-subst">$relative_path</span></span></span><span> အသစ်ပြောင်းခြင်းမအောင်မြင်ပါ!\n";
            }
        }
    } </span><span><span class="hljs-keyword">else</span></span><span> {
        </span><span><span class="hljs-comment">// စာချုပ်စာတမ်း不存在,တိုက်ရိုက်တင်ပါ</span></span><span>
        </span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-title function_ invoke__">ftp_put</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>, </span><span><span class="hljs-variable">$remote_file</span></span><span>, </span><span><span class="hljs-variable">$local_file</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getRealPath</span></span><span>(), FTP_BINARY)) {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"စာချုပ်စာတမ်း <span class="hljs-subst">$relative_path</span></span></span><span> အောင်မြင်စွာတင်ပါ!\n";
        } </span><span><span class="hljs-keyword">else</span></span><span> {
            </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"စာချုပ်စာတမ်း <span class="hljs-subst">$relative_path</span></span></span><span> တင်ပါးမအောင်မြင်ပါ!\n";
        }
    }
}

</span><span><span class="hljs-comment">// ရုပ်သိမ်းခြင်း FTP ဆက်</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ftp_close</span></span><span>(</span><span><span class="hljs-variable">$conn_id</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

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

FTP_RAWList function မှတဆင့်ဝေးလံခေါင်သီသောဆာဗာမှဖိုင်များနှင့်သတင်းအချက်အလက်များကိုကျွန်ုပ်တို့အလွယ်တကူရယူနိုင်သည်။ ဖိုင်အမျိုးအစားကိုပြုပြင်သည့်အချိန်နှင့်အရွယ်အစားကို အခြေခံ. ဖိုင်အသစ်တစ်ခုကိုတင်ရန်သို့မဟုတ်ရှိပြီးသားဖိုင်ကို overwrite လုပ်ရန်လိုအပ်သည်ကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။ ဤနည်းလမ်းသည်အလိုအလျောက်ဖြန့်ကျက်မှုအတွက်အလွန်သင့်လျော်သည်။

ဤရိုးရှင်းသော PHP script ဖြင့်သင်သည် FTP uploads များကိုပိုမိုကောင်းမွန်သောဖြန့်ကျက်ထားသောဖိုင်ထပ်တူပြုခြင်းနှင့်မွမ်းမံမှုများရရှိရန်အတွက်အလိုအလျောက်ဖြန့်ကျက်မှုဖြင့်ပြုလုပ်နိုင်သည်။