2012年1月17日火曜日

XREAやLivedoorBlog 等へ、PHP の ftp_put() からファイルのアップロードできない時の対処法

レンタルサーバのxrea.com や
LivedoorBlog の有料サービスで使用できるFTPサーバ接続へ、
PHPからファイル送信ができなかったのですが、それへの対処法です。
なかなか、PHPを使ってFTPサーバへファイルをアップロードしようという人もいないようで、
対処法が見つからなかったのです。

単純に
ftp_pasv($conn_id, true);

これをやればよかっただけでした。
ファイルパスとかも、どうやれば正解なのか良くわからなかったけど、
まぁ、とりあえず動きました。

    $ftp_server    = "ftp.example.com";
    $ftp_user_name = "ftpusername";
    $ftp_user_pass = "ftppassword";
    $conn_id       = ftp_connect($ftp_server);
    $login_result  = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
    if((!$conn_id) || (!$login_result)){return false;}

    /* ここの第二引数の true が大事。これがないと、アップロードできないFTPサーバがあるみたい。 */
    ftp_pasv($conn_id, true);

    /* 実行されているPHPファイルと同一階層にある test.txt をアップロードする */
    $file = "test.txt";
    $local_file  = $file;

    /* FTP接続時に最初に開かれるディレクトリにアップロードする。 */
    $remote_file = $file;

    /* xrea の場合は、このように書くと、良いと思います。 uploadtest のパーミッションを707とかにすること。*/
    $remote_file = "public_html/uploadtest/".$file;

    if(!ftp_put($conn_id, $remote_file, $local_file, FTP_BINARY)) {
        print("---- uploadNG ----");
    }
    ftp_close($conn_id);

まぁ、結局、FTPは使わないことにしたのですけども。

0 件のコメント:

コメントを投稿