ပထမ ဦး စွာသင်၏ 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>
ထို့နောက်သင်၏ဝဘ်ဆာဗာကိုပြန်လည်စတင်ပါ။
PHP မှပေးသော FTP_Connect နှင့် FTP_Login လုပ်ဆောင်ချက်များကို အသုံးပြု. FTP server နှင့်ချိတ်ဆက်ရန်လိုအပ်သည်။
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
အထက်ပါကုဒ်သည် FTP_Connect မှတစ်ဆင့် FTP server သို့ဆက်သွယ်ပြီး authentication အတွက် FTP_LOGIN ကို အသုံးပြုသည်။
ftp_Rawlist function သည်ဆာဗာမှသတ်မှတ်ထားသောမူရင်းလမ်းညွှန်များကိုပြန်ပို့သည်။ ဤစာရင်းတွင်ဖိုင်သို့မဟုတ်လမ်းညွှန်တစ်ခုစီအတွက်ခွင့်ပြုချက်များ, အရွယ်အစား, နေ့စွဲ, နေ့စွဲစသည့်အရာတစ်ခုစီအတွက်အသေးစိတ်အချက်အလက်များပါ 0 င်သည်။
<span><span><span class="hljs-meta"><?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">?></span></span><span>
</span></span>
အထက်ပါကုဒ်ကိုကွပ်မျက်ပြီးနောက်အောက်ပါပုံစံနှင့်ဆင်တူသည့်ဖိုင်များစာရင်းကိုပြန်ပို့လိမ့်မည်။
<span><span>Array
(
[0] => drwxr-xr-x 2 1000 1000 4096 May 7 12:30 public_html
[1] => -rw-r--r-- 1 1000 1000 2048 May 7 12:35 index.php
[2] => -rw-r--r-- 1 1000 1000 1024 May 7 12:36 style.css
)
</span></span>
ဤအချက်အလက်များကိုခွဲခြမ်းစိတ်ဖြာခြင်းအားဖြင့်ဖိုင်တစ်ခုရှိပြီးသားဖိုင်တည်ရှိမှုရှိမရှိစစ်ဆေးရန် scripts များကိုရေးရန်ရေးနိုင်သည်။
ကျွန်ုပ်တို့တွင်ဒေသခံဖြန့်ကျက်ဖိုင်တွဲတစ်ခုရှိပြီး၎င်းကိုဝေးလံခေါင်သီသောဆာဗာတွင်ဖိုင်များနှင့်နှိုင်းယှဉ်လိုသည်ဆိုပါစို့။ ကျွန်ုပ်တို့သည် FTP_RAWLITS ကို အဝေးမှဖိုင်အရွယ်အစားနှင့်အရွယ်အစားကိုရရှိရန်နှင့် local file ၏သတင်းအချက်အလက်များကိုတင်ရန်ဆုံးဖြတ်ရန်ညွှန်ကြားရန်ဒေသခံဖိုင်၏အချက်အလက်များကိုတင်ပါ။
<span><span><span class="hljs-meta"><?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> > </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">?></span></span><span>
</span></span>
ယခုကျွန်ုပ်တို့သည်အစိတ်အပိုင်းများအားလုံးကိုပေါင်းစပ်ပြီးအလိုအလျောက်ဖြန့်ကျက်သော script ကိုရေးပါ။ ဤ script သည်မည်သည့်ဖိုင်များကို update လုပ်ပြီးဝေးလံခေါင်သီသောဆာဗာသို့ upload လုပ်ရမည်ကိုအလိုအလျောက်ဆုံးဖြတ်လိမ့်မည်။
<span><span><span class="hljs-meta"><?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>-></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>-></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>-></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> > </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>-></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>-></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">?></span></span><span>
</span></span>
FTP_RAWList function မှတဆင့်ဝေးလံခေါင်သီသောဆာဗာမှဖိုင်များနှင့်သတင်းအချက်အလက်များကိုကျွန်ုပ်တို့အလွယ်တကူရယူနိုင်သည်။ ဖိုင်အမျိုးအစားကိုပြုပြင်သည့်အချိန်နှင့်အရွယ်အစားကို အခြေခံ. ဖိုင်အသစ်တစ်ခုကိုတင်ရန်သို့မဟုတ်ရှိပြီးသားဖိုင်ကို overwrite လုပ်ရန်လိုအပ်သည်ကိုကျွန်ုပ်တို့ဆုံးဖြတ်နိုင်သည်။ ဤနည်းလမ်းသည်အလိုအလျောက်ဖြန့်ကျက်မှုအတွက်အလွန်သင့်လျော်သည်။
ဤရိုးရှင်းသော PHP script ဖြင့်သင်သည် FTP uploads များကိုပိုမိုကောင်းမွန်သောဖြန့်ကျက်ထားသောဖိုင်ထပ်တူပြုခြင်းနှင့်မွမ်းမံမှုများရရှိရန်အတွက်အလိုအလျောက်ဖြန့်ကျက်မှုဖြင့်ပြုလုပ်နိုင်သည်။