『壹』 請問php如何像打開本地文件一樣打開遠程ftp伺服器上的文件
通過FTP是沒辦法遠程打開文件的 ,他只是一個上傳下載的工具
『貳』 PHP 通過curl下載ftp文件,怎麼設置埠號
ftp://172.19.71.63:8080/Flipped.2010.BluRay.720p.DTS.x264-CHD.sample.mkv
『叄』 用php 中ftp函數抓取別人伺服器上的文件內容怎麼做啊
ftp_get -- 從 FTP 伺服器上下載一個文件
說明
bool ftp_get ( resource ftp_stream, string local_file, string remote_file, int mode [, int resumepos])
ftp_get() 函數用來下載 FTP 伺服器上由 remote_file 參數指定的文件,並保存到由參數 local_file 指定的本地文件。傳送模式參數 mode 只能為 (文本模式) FTP_ASCII 或 (二進制模式) FTP_BINARY 中的其中一個。
注: 參數 resumepos 僅在適用於 PHP 4.3.0 以上版本.
如果成功則返回 TRUE,失敗則返回 FALSE。
ftp_get() 例子
<?php
// define some variables
$local_file = 'local.zip';
$server_file = 'server.zip';
// connect to the FTP server
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
// try to download
if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) {
echo "Successfully written to $local_file\n";
} else {
echo "There was a problem\n";
}
// close the connection
ftp_close($conn_id);
?>
不知道你要的是不是這個函數。
『肆』 請問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用戶的在線管理
領導要我策劃一個網頁設計大賽和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_nlist獲取到列表後怎麼判斷是一個文件還是一個目錄
鏈接上FTP伺服器之後,嘗試可以將路徑作為文件夾,修改為該路徑名,如果可以,說明是文件夾而非文件。
$dir = "/test";
if(@ftp_chdir($conn, $dir))