導航:首頁 > 編程語言 > phpftp伺服器

phpftp伺服器

發布時間:2023-05-21 22:23:39

❶ 用php實現Ftp用戶的在線管理


領導要我策劃一個網頁設計大賽和Flash創作大賽,要求必須實現在線報名和上傳作品。通過FreeBSD+Apache+PHP+Mysql+FTP我實現了該要求。
實現在線報名和上傳作品的思路是利用網頁表單收集用戶填寫的資料存儲到Mysql資料庫內,同時以該用戶的注冊名創建一個FTP上傳賬號並創建該用戶的相應目錄。
Ftp伺服器是系統默認帶的,採用系統用戶的用戶名和密碼,創建系統用戶就等於創建FTP用戶,FreeBSD是屬於UNIX陣營的操作系統,它沒有象Linux一樣的useradd和groupadd等創建用戶和組的命令,其取而代之的是pw命令加上相應參數來實現,在Freebsd上以管理員的身份創建一個用戶的命令是
以下是引用片段:
echo | pw useradd [-g][groupname] [-s][shelldir][-h 0]
參數g指定用戶組,參數s指定用戶的shell。
如果是普通用戶登陸頌凱慧的話還必須用到su命令,調用的方法是
以下是引用片段:
su root _c 『echo | pw useradd [-g][groupname] [-s][shelldir][-h 0] 』
執行之後系統會要求輸入管理員密碼,輸入密碼就可以以管理員的身份野答執行這個命令了。
實現這步操作的主要難點在於如何通過PHP來調用上面這些系統命孫答令去創建一個用戶,本例是使用PHP中的popen()函數來實現的,該函數執行指令打開文件,語法是int popen(string command, string mode),其打開的文件只能是單向的,只能讀或只能寫,對應的「string mode」為』r』或』w』,「string command」 就是命令字元串,在對文件的操作上可使用 fgets()、fgetss()與fputs()函數,本例用fputs()函數往文件裡面輸入管理員密碼。若是開檔發生錯誤將返回 false 值,最後函數要記得調用pclose()關閉。
下面我們來規劃一下FTP用戶的組,事先我們先用pw groupadd ftpuser創建ftpuse組,讓在線申請的用戶為這個組的成員。為了安全起見,我們不應該給FTP用戶Telnet許可權,所以我們還要專門給他們創建一個shell,使得他們不能通過Telnet正常登陸系統,方法如下:先創建一個文件/bin/ftponly
以下是引用片段:
#!/bin/csh
/bin/cat
XX
You can ony use this username to login ftp server!
And you can not use it to telnet to this system! XX
sleep 10
該文件中XX之間就是顯示給用telnet登陸的用戶看的信息。信息顯示10秒鍾就自動退出了。最後不要忘記用chmod +x /bin/ftponly給這個文件可執行屬性。
然後在/bin/shell文件中添加「/bin/ftponly」,在以後的命令裡面我們就可以利用pw中-s參數把這個shell指定給FTP用戶了。
最後還要注意一個問題,su命令僅僅是wheel管理組的用戶成員才可以使用,當PHP調用su命令的時候也必須以wheel組成員的身份運行,否則系統拒絕運行,而PHP運行系統命令的身份就是Apache Web伺服器運行的身份,初始的用戶名和用戶組都是nobody,所以先得建立一個wheel組的用戶www供apache使用,接著更改Apache的配置文件httpd.conf中的user為www,group為wheel,重新啟動Apache,就可以以新用戶身份運行了。
下面可以創建PHP源文件checkin.php了,代碼如下:
以下是引用片段:
?if (($username!="") and ($userpasswd!=""))//判斷是否有表單提交了信息
{ $rootpasswd="adminpassword"; //定義管理員密碼
$creatuser ="su --login root -c 'echo ".$userpasswd." | pw useradd ".$username." -s /bin/ftponly -g ftpuser _s /bin/ftponly -h 0' "; //這是利用su和pw命令創建用戶的用到的字元串
$fp=popen($creatuser,"w"); //調用popen()函數執行字元串中的命令,返迴文句柄給$fp
fputs($fp,$rootpasswd); //寫入管理員密碼到文件$fp,相當於輸入密碼給系統
pclose($fp);//關閉文件
$creatdir="su --login root -c 'mkdir /home/".$username."'";//創建用戶目錄的命令字元串
$fp=popen($creatdir,"w");//執行命令創建用戶目錄
fputs($fp,$rootpasswd); //輸入管理員密碼
pclose($fp);
$creatdir="su --login root -c 'mkdir /home/".$username."/public_html'";
$fp=popen($creatdir,"w"); //執行命令創建用戶網站根目錄
fputs($fp,$rootpasswd); //輸入管理員密碼
pclose($fp);
$creatdir="su --login root -c 'chown ".$username." /home/".$username."'"; //改變用戶目錄的所有者為用戶自己,初始為運行Apache的用戶www。
$fp=popen($creatdir,"w"); //執行命令
fputs($fp,$rootpasswd); //輸入管理員密碼
pclose($fp);
$creatdir="su --login root -c 'chown ".$username." /home/".$username."/public_html'"; //改變網站根目錄的歸屬
$fp=popen($creatdir,"w");
fputs($fp,$rootpasswd);
pclose($fp);
echo "恭喜".$username.",您的的FTP賬號已經申請成功!請到FTP上登陸,請注意,您沒有Telnet許可權";}
else{?
html
head
title申請FTP賬號/title
meta http-equiv="Content-Type" content="text/html; charset=gb2312"
/head
body bgcolor="#FFFFFF"
div align="center"
p申請FTP賬號/p
form method=POST action="? echo $PHP_SELF; ?"
table width="36%" border="0"
tr
td width="40%"
div align="right"賬號名稱:/div
/td
td width="60%"
input type="text" name="username"
/td
/tr
tr
td width="40%"
div align="right"密碼:/div
/td
td width="60%"
input type="password" name="userpasswd"
/td
/tr
tr
td colspan="2"input type="submit" name="Submit" value="申請"/td
/tr
/table
/form
/div?}?
/body
/html

❷ 使用PHP如何實現高效安全的ftp伺服器

FTP伺服器想必大家都不陌生,使用起來,現成的軟體也很多。不過免費的軟體功能有時候並不符合自己需求,又無法二次開發,付費軟體價格又比較高昂。PHP的swoole擴展,是PHP語言的高性能網路通信框架,提供了PHP語言的非同步多線程伺服器,非同步TCP/UDP網路客戶端,非同步MySQL,資料庫連接池,AsyncTask,消息隊列,毫秒定時器,非同步文件讀寫,非同步DNS查詢。

❸ 請問php如何像打開本地文件一樣打開遠程ftp伺服器上的文件

<?php
$handle = fopen("/home/rasmus/file.txt", "r");
$handle = fopen("/home/rasmus/file.gif", "wb");
$handle = fopen("http://www.example.com/", "r");
$handle = fopen("ftp://user:[email protected]/somefile.txt", "w");
?>
這樣不就好了,
'r' 只讀方式打開,將文件指針指向文件頭。
'r+' 讀寫方式打開,將文件指針指向文件頭。
'w' 寫入方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。
'w+' 讀寫方式打開,將文件指針指向文件頭並將文件大小截為零。如果文件不存在則嘗試創建之。
'a' 寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。
'a+' 讀寫方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創建之。

之後你就可以直接查詢php的手冊 ,,fopen fwrite file_get_content file_put_content 這幾個函數就好了

❹ 怎麼通過PHP來支持FTP和HTTP上傳

給你一些 php 操作 ftp 的函數:


FTP 函數

  1. ftp_alloc— 為要上傳的文件分配空間

  2. ftp_cp— 切換到當前目錄的父目錄

  3. ftp_chdir— 在 FTP 伺服器上改變當前目錄

  4. ftp_chmod— 設置 FTP 伺服器上的文件許可權

  5. ftp_close— 關閉一個 FTP 連接

  6. ftp_connect— 建立一個新的 FTP 連接

  7. ftp_delete— 刪除 FTP 伺服器上的一個文件

  8. ftp_exec— 請求運行一條 FTP 命令

  9. ftp_fget— 從 FTP 伺服器上下載一個文件並保存到本地一個已經打開的文件中

  10. ftp_fput— 上傳一個已經打開的文件到 FTP 伺服器

  11. ftp_get_option— 返回當前 FTP 連接的各種不同的選項設置

  12. ftp_get— 從 FTP 伺服器上下載一個文件

  13. ftp_login— 登錄 FTP 伺服器

  14. ftp_mdtm— 返回指定文件的最後修改時間

  15. ftp_mkdir— 建立新目錄

  16. ftp_nb_continue— 連續獲取/發送文件(non-blocking)

  17. ftp_nb_fget— 從 FTP 伺服器獲取文件並寫入到一個打開的文件(非阻塞)

  18. ftp_nb_fput— 將文件存儲到 FTP 伺服器 (非阻塞)

  19. ftp_nb_get— 從 FTP 伺服器上獲取文件並寫入本地文件(non-blocking)

  20. ftp_nb_put— 存儲一個文件至 FTP 伺服器(non-blocking)

  21. ftp_nlist— 返回給定目錄的文件列表

  22. ftp_pasv— 返回當前 FTP 被動模式是否打開

  23. ftp_put— 上傳文件到 FTP 伺服器

  24. ftp_pwd— 返回當前目錄名

  25. ftp_quit— ftp_close 的 別名

  26. ftp_raw— 向 FTP 伺服器發送命令

  27. ftp_rawlist— 返回指定目錄下文件的詳細列表

  28. ftp_rename— 更改 FTP 伺服器上的文件或目錄名

  29. ftp_rmdir— 刪除 FTP 伺服器上的一個目錄

  30. ftp_set_option— 設置各種 FTP 運行時選項

  31. ftp_site— 向伺服器發送 SITE 命令

  32. ftp_size— 返回指定文件的大小

  33. ftp_ssl_connect— 打開 SSL-FTP 連接

  34. ftp_systype— 返回遠程 FTP 伺服器的操作系統類型


例子:

<?php

$ftp_server="";
$ftp_user_name="";
$ftp_user_pass="";
$file="";//tobeuploaded
$remote_file="";

//簡歷ftp鏈接
$conn_id=ftp_connect($ftp_server);

//使用用戶名和密碼登錄
$login_result=ftp_login($conn_id,$ftp_user_name,$ftp_user_pass);

//上傳文件
if(ftp_put($conn_id,$remote_file,$file,FTP_ASCII)){
echo"成功上傳文件:$file ";
exit;
}else{
echo"上傳文件錯誤:$file ";
exit;
}

//關閉ftp鏈接
ftp_close($conn_id);

❺ 自己寫的php代碼連接不上遠程ftp伺服器,但可以連接本地ftp伺服器(127.0.0.1)

$hostname="127.0.0.1";
127.0.0.1是localhost的ip
你用localhost當然連不上你的服喚悔喚務和凱器前信

❻ 用PHP怎樣實現把文件從一台伺服器,移動到另一台FTP伺服器呢

<?php
// 鏈接ftp
$conn = ftp_connect('地址', '埠', '超時時間');

// 登錄
ftp_login($conn, '賬號', '密碼');

$here = ftp_pwd($conn);

//獲取伺服器端系統信息ftp_systype()
$server_os = ftp_systype($conn);

//被動模式(PASV)的開關,打開或關閉PASV(1表示開)
ftp_pasv($conn, 1);

//進入目錄中用ftp_chdir()函數,它接受一個目錄名作為參數。
ftp_chdir($conn, "public_html");
//ftp_mkdir($conn, "test");

ftp_put($conn, "伺服器顯示的名稱", "要上傳的文件名稱", FTP_ASCII);

ftp_quit($conn);

❼ 用PHP控制FTP文件上傳

利用PHP,你總是可以有多種方式來完成某個特定的任務。我們就拿文件上傳舉個例子。當然了,你可以按照傳統的方式來使用HTTP文件上傳,把文件直接傳輸到Web伺服器磁碟上。沙河電腦培訓認為你還可以用更加奇異的方式上傳,用FTP協議兩步就完成上傳:從你的本地硬碟到Web伺服器,然後再到FTP伺服器。



PHP在本機同時支持FTP和HTTP上傳,所以你可以根據自己應用程序的設計需要進行最佳的選擇。使用PHP的FTP函數進行文件傳輸幾乎與使用傳統的FTP客戶端相同——你會看到連函數的名字都和標準的FTP命令類似。


關於HTTP文件上傳的文章已經多得滿天飛了,這就是為什麼本文有必要把注意賣灶爛力放在基於FTP的文件辯首上傳上了(但是在後面給出的例子中,兩種方式你都會看到)。要注意的是,本教程假設你已經安裝好了PHP/Apache,而且HTTP文件上傳和FTP的函數都已經激活了。


第一步:確信你擁有連接/上傳到FTP伺服器的許可權


PHP的FTP函數需要客戶端-伺服器連接,所以你需要在進行文件上傳之前登錄到目標伺服器上。你的第一項任務是確信你已經擁有了完成這項任務的信中漏任書。這一步可能看起來是理所當然的,但是你會驚奇地發現有多少開發人員忘了這么做,結果後來浪費大量的時間來解決因此而出現的問題。


閱讀全文

與phpftp伺服器相關的資料

熱點內容
伺服器如何獲取文件列表 瀏覽:668
creo五軸編程光碟 瀏覽:12
蘋果app網路驗證在哪裡 瀏覽:14
博科清空命令 瀏覽:384
簡愛英文pdf 瀏覽:376
cnc編程有前途嗎 瀏覽:586
聯想app怎麼聯網 瀏覽:722
linuxftp命令登錄 瀏覽:1000
android獲取圖片縮略圖 瀏覽:646
神戶制鋼螺桿壓縮機 瀏覽:29
差分演化演算法 瀏覽:567
中山市加密軟體 瀏覽:446
mc反編譯源碼 瀏覽:139
企業商城網站源碼 瀏覽:411
shell腳本編程是什麼 瀏覽:762
單片機led閃爍匯編 瀏覽:203
點淘app怎麼沒金蛋了 瀏覽:878
app拉新哪裡找推廣碼 瀏覽:935
哪個app生活服務好 瀏覽:108
mht安卓用什麼軟體打開 瀏覽:320