PHP のマニュアル通りに考えると、いろいろ変なところもあるのですが、実際これでアップロードできています。SSL 対応すれば、FTPS でも可能だと思います。 URL の指定方法が変わっていて、「ログインディレクトリからの相対位置」と書いてますが、先頭の FTPサーバにログインして自動的にカレントとなる場所からの階層を指定します。実際には、順番にディレクトリ変更して目的の場所に移動して処理しているようです。
<?php // ********************************************************* // ユーザとパスワード // ********************************************************* $username = 'userid'; $password = 'password'; // ********************************************************* // 対象ファイル // ログインディレクトリからの相対位置 // ********************************************************* $url = 'ftpサーバ/path/index.htm'; // ********************************************************* // URL // ********************************************************* $ftp_server = "ftp://" . $username . ":" . $password . "@" . $url; // ********************************************************* // 開始 // ********************************************************* $ch = curl_init(); // ********************************************************* // デバッグ用の詳しいメッセージを出力 // ********************************************************* curl_setopt($ch, CURLOPT_VERBOSE, TRUE); $fpe = fopen("./debug_ftp.txt","w"); curl_setopt($ch, CURLOPT_STDERR, $fpe); // ********************************************************* // 転送用のオプション // ********************************************************* curl_setopt($ch, CURLOPT_URL, $ftp_server); // ********************************************************* // アップロード用 // ********************************************************* curl_setopt($ch, CURLOPT_PUT, true); $putData = fopen("/home/lightbox/www/homepage/dummy/test/links.htm","r"); $sz = filesize("/home/lightbox/www/homepage/dummy/test/links.htm"); print "filesize : $sz<br>"; curl_setopt($ch, CURLOPT_INFILE, $putData); curl_setopt($ch, CURLOPT_INFILESIZE, $sz); // ********************************************************* // 実行 // ********************************************************* curl_exec($ch); // ********************************************************* // 終了 // ********************************************************* curl_close($ch); // ********************************************************* // 後処理 // ********************************************************* fclose($putData); fclose($fpe); print "done.<br>\n"; ?>
|
【PHP + 通信の最新記事】
- fake sendmail for windows を使って、PHP でごく普通に( mb_send_mail で )メール送信
- PHP の cURL でファイルアップロード
- PHP : WEB でもコマンドラインでも HTTP でファイルをダウンロードする 『fget.php』
- PHP : cURL : Google Photo API の albums.list メソッドを使用して アルバム一覧データを取得する
- PHP + cURL で Google Photo API の アクセストークンを取得する
- PHP : cURL で FTP + SSL ダウンロード
- PHP の imap 関数で( Windows ローカル )、Yahoo メールのメールをさくらインターネットのメールへコピーする
- PHP の imap 関数( Windows のローカル )で、さくらインターネットのメールボックスの情報を取得する
- PHP : IMAP 関数 でまずメールのヘッダ部分を整理してログに出力する / ※ JSON 出力を追加
- ファイルを一つアップロード : FORM の target を IFRAME にして、PHP に JavaScript を書き出させて元のページにメッセージを表示させる
- Pear の Net_POP3 で、SSL(995) を使って簡単にメール受信
- PHP をコマンドプロンプトから実行して、WEB 上のデータを取得するいくつかの方法
- FormData を使用して $.ajax で送信すると、ファイルのアップロードとメール送信(ファイル添付)を一度に行えます
- ファイルのアップロードからそれを添付してメールを送るテンプレート(スケルトン)
- PHP : mb_send_mail を使用した自家用メール送信 API
- PHP で Windows標準のオブジェクト(CDO.Message)とGMail を使ってメール送信
- PHP : http 経由でファイルのサイズを取得する file_size 関数と ファイルサイズを付加した get_imagesize 関数
- 連想配列のキー部分がプロパティと一致したらセットする( メール送信用クラス )
- PHP : リモートのファイルサイズを取得する
- ローカルの PHP を使ってコマンドプロンプトより簡単にバイナリファイルをアップロードする