2011-06-21 13 views
2

PHP 5.3.3(Linuxビルド)のftp_getを使用してFTPサーバーからファイルを取得しようとしています。 私はログインできますが、ファイルをリストできますが、ftp_getコマンドはファイルをダウンロードしません。ftp_getは失敗しますが、PHPによってエラーが報告されません

ここに私が使用しているコードがあります。

$ftp_user_name = DBUSER; 
$ftp_user_pass = DBUSERPASS; 
$ftp_server = HOST; 
$local_file = "poutarde.odt"; 
$server_file = "poutarde.odt"; 

// set up a connection to ftp server 
$conn_id = ftp_connect($ftp_server); 

// login with username and password 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// turn passive mode on 
ftp_pasv($conn_id, true); 

// try to download $server_file and save to $local_file 
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); 

"poutarde.odt"ファイルはFTPのルートにあります。

クライアント(filezilla)からFTPのダウンロードを確認したところ、すべて正常に動作しました。 しかし、ftp_getを使用すると、何も得られません(「問題がありました」というエコーを除く)、PHPエラーはなく、ただ失敗します。

ありがとうございました。リノ

+0

Wiresharkを使用してFTPセッションをスニッフィングし、PHPスクリプトが$ local_fileに書き込むことができることを確認します。 – Sjoerd

+0

ftp_connectとftp_loginがfalseを返さないようにしたいかもしれません。あなたのコードは現在、接続とログインが成功したと仮定しています。 –

+0

この問題は、コード自体の内容ではなく、不十分なファイルのアクセス許可が原因で発生したと思われるため、この質問を終了することにしました。 –

答えて

-3

ftp_get

は、ファイルハンドラではなく、ファイル名を期待しています。

$local_file = fopen("poutarde.odt",'w'); 
//... 
if(ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) 
+0

$ local_fileは実際には "/tmp/poutarde.odt"のような一時パスをwww-dataの書き込み権限で必要としました。 助けてくれてありがとう! Reno – Nevada

+2

あなたは 'ftp_get'を書きましたが、' ftp_fget'(これはファイルハンドラが必要です)にリンクしました。通常の 'ftp_get'は文字列を取ります。 – DTest

関連する問題