無料のレンタルサーバにftpするプログラムをphpで作成し使っていたのだが、OSをCentOS 7に変更した影響かエラーで動かなくなった。コマンドラインから実行し、指定のディレクトリ内の全フファイルをUploadするプログラムです。
エラーの内容は以下の通り。
A PHP Error was encountered
Severity: Warning
Message: ftp_put(): Unable to build data connection: No route to host
Filename: controllers/xxxxxxxx.php
Line Number: xxx
phpのプログラムは以下の通り。エラーチェックを一切行っていない手抜きプログラム。
$ftp_server = 'xxxx.xxxxxxxx.jp';
$ftp_user = 'xxxxxxxx';
$ftp_pass = 'xxxxxxxx';
$ftp_stream = ftp_connect( $ftp_server );
$ftp_result = ftp_login( $ftp_stream, $ftp_user, $ftp_pass );
foreach( $files as $val ) {
ftp_put( $ftp_stream, './'. $val, $base . $val, FTP_ASCII );
echo "Upload: " . $val . "\n";
}
ftp_close( $ftp_stream );
なんだかなあと思いながら
ftp_pasv( $ftp_stream, true );
を追加してみる。
動いたよ。
修正後のプログラムは以下の通り。
$ftp_server = 'xxxx.xxxxxxxx.jp';
$ftp_user = 'xxxxxxxx';
$ftp_pass = 'xxxxxxxx';
$ftp_stream = ftp_connect( $ftp_server );
$ftp_result = ftp_login( $ftp_stream, $ftp_user, $ftp_pass );
ftp_pasv( $ftp_stream, true );
foreach( $files as $val ) {
ftp_put( $ftp_stream, './'. $val, $base . $val, FTP_ASCII );
echo "Upload: " . $val . "\n";
}
ftp_close( $ftp_stream );
パッシブモードの指定が必要になったようだ。CentOS 7にしてPHPのバージョンが変わって規定値が変わったのかな?それともレンタルサーバ側が変わったのだろうか。動いたからいいか。
0 件のコメント:
コメントを投稿