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

はじめましてphp初心者です。

以下の内容を実行した際に
うまく行かず困っています。


$ftp_server="【サーバー名】";
$ftp_user_name="【アカウント名】";
$ftp_user_pass="【パスワード】";

//サーバーに接続する
$conn_id = ftp_connect($ftp_server);

// ユーザ名とパスワードでログインする
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// 接続できたか確認する
if ((!$conn_id) || (!$login_result)) {
echo "FTP接続に失敗しました。";
exit;
} else {
echo "FTP接続に成功しました。";
}

$local_file="【ローカルのファイルパス】";
$remote_file="【FTPサーバー上のアップロードファイルパス】";

if (!ftp_put($conn_id, $remote_file, $local_file, FTP_ASCII)) {
echo "FTPアップロードに失敗しました。";
exit;
} else {
echo "FTPアップロードに成功しました。";
}

ftp_close($conn_id);

ローカル、リモート共にファイルの位置は間違っていません。

また以上のように反映させた際に返ってくる答えは

「FTP接続に成功しました。」

「FTPアップロードに成功しました。」

と出てきます。


しかし、ffftpを確認したところ

サバー側に変化がありません。

手動ではffftpでアップ可能です。


ご教授お願い致します。

A 回答 (2件)

エラーが表示されないことを鑑みると、


意図とは異なるディレクトリにPUTされている可能性が高いです。
$remote_file が絶対パス指定されているかどうか、
そのあたりに問題がありそうです。

考えられる可能性を列挙するとこんな感じでしょうか。

(1)ファイルパスの指定が間違っている。
・違うディレクトリにPUTされていないか。
・Windows環境、Unix/Linux環境のパス表現の違い。
・「/」で区切っているか。
・「\」で区切る場合、「\\」と指定しているか。

(2)PASVモードにする必要がある環境。
ftp_login()の後、ftp_put()の前に以下を実行してみる。
if( ! ftp_pasv( $ftp, true ) ){ exit( 'ftp_pasv(): failed.' ); }

(3)ftp_put()でフルパス指定ができない環境。
ディレクトリ移動と PUT を分離してみる。
ftp_chdir( $ftp_conn, '/path/to/somewhere/' );
ftp_put( $ftp_conn, 'file.txt', 'c:/local/path/file.html', FTP_ASCII );

(4)ftp_put()がレンタルサーバで禁止されている。
    • good
    • 0

念のため確認ですが



>しかし、ffftpを確認したところ
>サバー側に変化がありません。

ffftpは「最新の状態に更新」されていますよね(キャッシュを保持しているハズなので・・・)。
    • good
    • 0
この回答へのお礼

はい、更新しましたが変化なしです。

直接ページに行っても変化ありません。

お礼日時:2012/01/12 23:43

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