使用PHP如何實現(xiàn)高效安全的ftp服務(wù)器(一)
FTP服務(wù)器(File Transfer Protocol Server)是在互聯(lián)網(wǎng)上提供文件存儲和訪問服務(wù)的計算機,它們依照FTP協(xié)議提供服務(wù)。 FTP是File Transfer Protocol(文件傳輸協(xié)議)。顧名思義,就是專門用來傳輸文件的協(xié)議。簡單地說,支持FTP協(xié)議的服務(wù)器就是FTP服務(wù)器。
摘要:
本文主要闡述使用PHP的swoole擴展實現(xiàn)ftp服務(wù)器,同時擴展ftp服務(wù)器個性化功能和安全性。真正實現(xiàn)一個自己完全掌控的ftp服務(wù)器,可以個性化定制的ftp服務(wù)器。
正文:
FTP服務(wù)器想必大家都不陌生,使用起來,現(xiàn)成的軟件也很多。不過免費的軟件功能有時候并不符合自己需求,又無法二次開發(fā),付費軟件價格又比較高昂。PHP的swoole擴展,是PHP語言的高性能網(wǎng)絡(luò)通信框架,提供了PHP語言的異步多線程服務(wù)器,異步TCP/UDP網(wǎng)絡(luò)客戶端,異步MySQL,數(shù)據(jù)庫連接池,AsyncTask,消息隊列,毫秒定時器,異步文件讀寫,異步DNS查詢。
Swoole可以廣泛應(yīng)用于互聯(lián)網(wǎng)、移動通信、企業(yè)軟件、網(wǎng)絡(luò)游戲、物聯(lián)網(wǎng)、車聯(lián)網(wǎng)、智能家庭等領(lǐng)域。 使用PHP+Swoole作為網(wǎng)絡(luò)通信框架,可以使企業(yè)IT研發(fā)團隊的效率大大提升,更加專注于開發(fā)創(chuàng)新產(chǎn)品。
Swoole底層內(nèi)置了異步非阻塞、多線程的網(wǎng)絡(luò)IO服務(wù)器。PHP程序員僅需處理事件回調(diào)即可,無需關(guān)心底層。與Nginx/Tornado/Node.js等全異步的框架不同,Swoole既支持全異步,也支持同步。
有了這個基礎(chǔ),基于TCP/IP協(xié)議的服務(wù)器開發(fā)就變得容易了?;蛟S大家會問,C#等其他語言同樣可以實現(xiàn)啊,為什么用PHP呢?我想主要考慮的還是開發(fā)效率。PHP是無需編譯的腳本語言,開發(fā)部署速度快。
無需贅言,這里列出步驟:
00 準(zhǔn)備平臺,我這里使用的CentOS7;
01 安裝php和swoole擴展,請參考http://wiki.swoole.com/wiki/page/6.html;
02 設(shè)置字符集,由于ftp處理文件名容易出現(xiàn)亂碼,建議將操作系統(tǒng)的字符集設(shè)置成GB18030,這樣與Windows保持一致,目前大部分ftp客戶端雖然也支持utf8文件名編碼,但是,使用起來比不如意。如何好的解決方案請不吝告知,非常感謝;
03 開始編寫php程序,測試php程序;
04 部署php版的ftp服務(wù)器。
本文要實現(xiàn)ftp服務(wù)器的功能目標(biāo)有:
* 用戶,組管理;
* 密碼自助修改與重置;
* 文件夾權(quán)限管理;
* IP訪問控制;
* 在線用戶查看;
* 磁盤空間使用查看;
* SSL支持,保護密碼及文件的傳輸安全;
* 內(nèi)置web管理頁面,方便進(jìn)行遠(yuǎn)程管理?! ?/p>
項目目錄:
FtpServer
|
+-conf
|
|
|
+-config.php //FTP配置文件
|
+-ssl.crt //ssl證書
|
+-ssl.key //ssl密鑰
|
+-inc
|
|
|
+-CSmtp.php //smtp發(fā)郵件類,用于FTP密碼發(fā)送和重置
|
+-ShareMemory.php //共享內(nèi)存操作類
|
+-User.php //用戶管理、文件權(quán)限管理、IP訪問控制
|
+-logs //日志文件
|
+-reference //參考文檔
|
+-web
|
|
|
+-wwwroot //FTP Web管理網(wǎng)站
|
+-CWebServer.php //FTP內(nèi)置http服務(wù)器
|
+-CFtpServer.php //FTP服務(wù)器主程序
+-MyFtpServer.php //FTP入口程序
此篇文章先給大家介紹到這里,后續(xù)還會持續(xù)更新。關(guān)于使用PHP如何實現(xiàn)高效安全的ftp服務(wù)器(二),可以點擊了解詳情。
相關(guān)文章
詳解php中生成標(biāo)準(zhǔn)uuid(guid)的方法
這篇文章主要介紹了php中生成標(biāo)準(zhǔn)uuid(guid)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
用php制作簡單分頁(從數(shù)據(jù)庫讀取記錄)的方法詳解
本篇文章介紹了,使用php制作簡單分頁(從數(shù)據(jù)庫讀取記錄)的方法詳解。需要的朋友參考下2013-05-05
老生常談PHP中的數(shù)據(jù)結(jié)構(gòu):DS擴展
下面小編就為大家?guī)硪黄仙U凱HP中的數(shù)據(jù)結(jié)構(gòu):DS擴展。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
php封裝好的人民幣數(shù)值轉(zhuǎn)中文大寫類
這篇文章主要給大家分享了幾個php實現(xiàn)的人民幣數(shù)值轉(zhuǎn)中文大寫的代碼,非常的全面,有需要的小伙伴可以查看下2015-12-12
PHP使用Memcache時模擬命名空間及緩存失效問題的解決
這篇文章主要介紹了PHP使用Memcache時模擬命名空間及緩存失效問題的解決,這里談到的緩存失效主要針對高并發(fā)場景下取不到緩存的情況,需要的朋友可以參考下2016-02-02

