作者 主題: PHP下載檔案?  (閱讀 8145 次)

0 會員 與 1 訪客 正在閱讀本文。

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
PHP下載檔案?
« 於: 2011-08-15 19:10 »
請問各位大大,
連接沒有問題,可是一直不能下載檔案,請問這是有那裡錯了嗎?

代碼: [選擇]


<?php

// define some variables
$local_file "local.zip";
$server_file "server.zip";
$ftp_user_name="user";
$ftp_user_pass="userpass";
$ftp_server="192.168.1.1";
$port "3837";
// set up basic connection
$conn_id ftp_connect($ftp_server,$port);

// login with username and password
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass);
// uncomment if you need to change directories
if (ftp_chdir($conn_id"DOWNLOAD")) {
    echo 
"Current directory is now: " ftp_pwd($conn_id) . "\n";
} else {
    echo 
"Couldn&#39;t change directory\n";
}


// try to download $server_file and save to $local_file
if (ftp_get($conn_id$local_file$server_fileFTP_BINARY)) {
    echo 
"Successfully written to $local_file\n";
} else {
    echo 
"There was a problem\n";
}

// close the connection
ftp_close($conn_id);

?>


micmic3

  • 俺是博士!
  • *****
  • 文章數: 1692
    • 檢視個人資料
Re: PHP下載檔案?
« 回覆 #1 於: 2011-08-16 09:11 »
請問各位大大,
連接沒有問題,可是一直不能下載檔案,請問這是有那裡錯了嗎?

代碼: [選擇]


<?php

// define some variables
$local_file "local.zip";
$server_file "server.zip";
$ftp_user_name="user";
$ftp_user_pass="userpass";
$ftp_server="192.168.1.1";
$port "3837";
// set up basic connection
$conn_id ftp_connect($ftp_server,$port);

// login with username and password
$login_result ftp_login($conn_id$ftp_user_name$ftp_user_pass);
// uncomment if you need to change directories
if (ftp_chdir($conn_id"DOWNLOAD")) {
    echo 
"Current directory is now: " ftp_pwd($conn_id) . "\n";
} else {
    echo 
"Couldn&#39;t change directory\n";
}


// try to download $server_file and save to $local_file
if (ftp_get($conn_id$local_file$server_fileFTP_BINARY)) {
    echo 
"Successfully written to $local_file\n";
} else {
    echo 
"There was a problem\n";
}

// close the connection
ftp_close($conn_id);

?>


要查一下目錄對不對
« 上次編輯: 2011-08-16 09:14 由 micmic3 »

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP下載檔案?
« 回覆 #2 於: 2011-08-16 09:25 »
俺是博士:
FTPY上是有這個目錄,因為我已經用
ftp_chdir($conn_id, "DOWNLOAD") 移到DOWNLOAD資料夾,(印出來的結果 : Current directory is now: /DOWNLOAD)
請問是那裡有錯嗎?

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP下載檔案?
« 回覆 #3 於: 2011-08-16 09:34 »

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP下載檔案?
« 回覆 #4 於: 2011-08-16 09:51 »
俺是博士:
看起來也都沒什麼錯哩,可是還是不能下載檔案?

網頁訊息:
Current directory is now: /DOWNLOAD
There was a problem

Yamaka

  • 俺是博士!
  • *****
  • 文章數: 4913
    • 檢視個人資料
    • http://www.ecmagic.com
Re: PHP下載檔案?
« 回覆 #5 於: 2011-08-16 10:02 »
看起來也都沒什麼錯哩,可是還是不能下載檔案?

網頁訊息:
Current directory is now: /DOWNLOAD
There was a problem

登入之後加了 ftp_pasv($conn_id, true) 也不行嗎?
那要不要看一下 ftp server 端有沒有什麼 log 訊息

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP下載檔案?
« 回覆 #6 於: 2011-08-16 10:17 »
俺是博士:
檢查了error log,訊息:

 ftp_get(server.zip): failed to open stream: Permission denied in /var/www/mysite/phpFTP.php on line 23
[Tue Aug 16 10:06:45 2011] [error] [client 2001:e10:2000:d1:e260:ad69:eab8:d8eb] PHP Warning:  ftp_get(): Error opening server.zip in //var/www/mysite/phpFTP.php on line 23


這是目的地檔案的權限問題嗎?FTP上要下載的檔案已經設成700了

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: PHP下載檔案?
« 回覆 #7 於: 2011-08-16 10:38 »
先到 shell 下頭用 ftp 指令抓看看有沒有問題吧.

權限問題, 有可能是 ftp server 端的檔案無法讀取, 或 ftp client 端無法寫入.

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP下載檔案?
« 回覆 #8 於: 2011-08-16 11:50 »
在shell下執行FTP是OK的

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: PHP下載檔案?
« 回覆 #9 於: 2011-08-16 11:55 »
httpd 跑的使用者跟你 shell 跑的使用者不一定會一樣.
如果 ftp 指令跑是正常的, 表示應該不會是 ftp server 的問題.

下載的檔案路徑改到 /tmp 試看看吧.

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP下載檔案?
« 回覆 #10 於: 2011-08-16 12:11 »
可是使用者在網站上點選下載,client端怎麼指定下載檔案路徑??

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: PHP下載檔案?
« 回覆 #11 於: 2011-08-16 12:44 »
client 的程式不就是你寫的? 為什麼路徑不能指定?
看你要先切換過去還是直接把檔名加上路徑不都可以?

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP下載檔案?
« 回覆 #12 於: 2011-08-16 13:10 »
可是使用者在網站上點選下載,client端怎麼指定下載檔案路徑??

對不起,我的意思是當使用者,
http://192.168.1.1/ftpdownload.php
檔案不是下載到end user ?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
Re: PHP下載檔案?
« 回覆 #13 於: 2011-08-16 13:45 »
本來就不會到 end user.
php 是 server 上的 script, 並不是 browser 上的 script.

用 php 去抓 ftp, 當然是抓到 web server 上頭. 如果你需要送到 end user, 要再用 http 的方式把抓到的檔案再送給 end user 的 browser.

NARs

  • 活潑的大學生
  • ***
  • 文章數: 227
    • 檢視個人資料
Re: PHP下載檔案?
« 回覆 #14 於: 2011-08-16 14:01 »
了解~~google到的做法也是像大大說的,感謝!