プロが教えるわが家の防犯対策術!

今回phpを使ってftp関数であるftp_getを実行してみたところ【Warning: ftp_get(): Error opening】が出てきました。
サイトで調べた結果、パスの指定のミスかパーミッションが原因だと言うことがわかりました。
それから小一時間あれこれ試してみましたがダメでした・・・。

そこで今度はperlを使って同じ内容のスクリプトを書いてみると成功しました。

どなたかphpの方ではなぜ正しく動作出来ないのかをご教示ください。

以下はphpとperlのスクリプトです。
===========================================================================
<?php
$FTPSERVER = "!!!";
$FTPUSER = "@@@";
$FTPPASSWORD = "***";

//ftpサーバに接続
$ftp = ftp_connect($FTPSERVER);
//ユーザログイン
ftp_login($ftp, $FTPUSER, $FTPPASSWORD);
ftp_pasv($ftp, true);

$srverfile = "test.txt";
$localfile = "data1.txt";

ftp_get($ftp, $localfile, $srverfile , FTP_BINARY);

ftp_quit($ftp);
?>
============================================================================
#!/usr/local/bin/perl

use Net::FTP;

my $host = '!!!';# 接続先
my $user = '@@@';# FTPのユーザ
my $pass = '***';# FTPのパスワード
my $remote_file = 'test.txt';# リモートのファイル(これを取得)
my $local_file = 'data1.txt';# ローカルファイル(ここに保存)

my $ftp = Net::FTP->new($host) or die "can not connection: $@";
$ftp->login($user, $pass) or die $ftp->message;# ログイン
$ftp->binary;# バイナリモードに変更
$ftp->get($remote_file, $local_file) or warn $ftp->message;# ファイル取得
$ftp->quit;# 終了

A 回答 (2件)

ANo.1です。



補足説明ありがとうございます。
エラーメッセージは例示したものがすべてということは、ftp_getの第二引数が何らかの理由で正しく渡せていない(空の文字列が渡されている)のではないでしょうか。

この回答への補足

>エラーメッセージは「Warning: ftp_get(): Error opening」ですべてでしょうか。

この質問に関して取り違いていました。
エラーメッセージは正しくは
「Warning: ftp_get(): Error opening data.txt in phpのファイルパス on line 15」です。

すみませんでした。

補足日時:2009/09/24 01:26
    • good
    • 0

エラーメッセージは「Warning: ftp_get(): Error opening」ですべてでしょうか。

この回答への補足

ハイ、一つだけです。
phpの方でもディレクトリの移動などはできるのでログインは出来ていると思います。

補足日時:2009/09/24 00:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!