FTPによるファイル送信を実装。

ローカルのzipファイルをFTPサーバに送信するという内容です。


以下のような流れになります。

  1. ftp_connectFTPサーバに接続
  2. ftp_loginFTPサーバにログイン
  3. ftp_putFTPサーバにファイルアップロード
  4. ftp_closeで切断


FTPに関する関数も豊富に揃っているので楽勝かと思いきや、以下のような
二つのエラー+αが発生する等、結構苦戦しました…(´・ω・`)

Function name must be a string in

ftp_closeの先頭に「$」をつけて「$ftp_close」としていたのが原因。
 寝ぼけてたのか俺は (゚Д゚)!?

The filename, directory name, or volume label syntax is incorrect

ftp_putでアップロード先を指定する際、ファイル名が抜けていた。


上記を解決した後にアップロード先を見てみたら、zipファイルは出来ていたものの容量が極端に少なく、
開こうとしたら「ファイルは壊れています」と言われてしまう始末…
ftp_putの引数で「FTP_ASCII」を指定したのが原因だと気付きました。
(zipファイルのアップロードなので「FTP_BINARY」を指定しないと…☆)


ということで、以下が完成したソースです。

$ftpServer = "IPアドレス"; // ドメイン名でも可
$ftpId = "choo"; // FTPログインユーザ
$ftpPassword = "0429"; // FTPログインパスワード
$file = "Choo.txt.zip"; // アップロードしたいファイル
$uploadFile = str_replace(".txt", "", $file); // アップロード後のファイル名
$stream = ftp_connect($ftpServer);
$conn = ftp_login($stream, $ftpId, $ftpPassword) or die("muri!!");
if($conn){
  set_time_limit(360);
  ftp_put($stream, "test/".$uploadFile, $file, FTP_BINARY);
}
ftp_close($stream);