phpのftp_get()でエラーが出ます。
今回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; # 終了
お礼
Listをファイルに出力し、その情報を基にgetしたファイルだけを 削除するようにしました。