21
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[PHP] FTPでのアップ/ダウンロード

Last updated at Posted at 2015-10-22

[PHP] FTPでのアップ/ダウンロード

備忘録
基本は以下でok

  1. ftp_connect
  2. ftp_login
  3. ftp_pasv
  4. ftp_put/get

アップロード

コード

$ftpValue = array(
    'ftp_server' => FTP_ADDRESS,
    'ftp_user_name' => FTP_USER,
    'ftp_user_pass' => FTP_PASS
);
$remote_file = REMOTE_FILE_NAME;
$upload_file = LOCAL_FILE_NAME;

$connection = ftp_connect($ftpValue['ftp_server']);

$login_result = ftp_login(
    $connection,
    $ftpValue['ftp_user_name'],
    $ftpValue['ftp_user_pass']
);

ftp_pasv($connection, true);
$ftpResult = ftp_put($connection, $remote_file, $upload_file, FTP_BINARY, false);

if (!$ftpResult) {
    throw new InternalErrorException('Something went wrong.');
}

ftp_close($connection);

ダウンロード

コード

$ftpValue = array(
    'ftp_server' => FTP_ADDRESS,
    'ftp_user_name' => FTP_USER,
    'ftp_user_pass' => FTP_PASS
);
$remote_file = REMOTE_FILE_NAME;
$download_file = LOCAL_FILE_NAME;

$connection = ftp_connect($ftpValue['ftp_server']);

$login_result = ftp_login(
    $connection,
    $ftpValue['ftp_user_name'],
    $ftpValue['ftp_user_pass']
);

//リモートでのファイル存在チェック
if(ftp_size($connection, REMOTE_FILE_NAME)){
    ftp_pasv($connection, true);
    $ftpResult = ftp_get($connection, $download_file, $remote_file, FTP_BINARY, false);
}

if (!$ftpResult) {
    throw new InternalErrorException('Something went wrong.');
}

ftp_close($connection);

メモ

ftp_pasv … パッシブモードのオン/オフ

ダウンロードでもアップロードでもこんなエラーが出るときにはパッシブモードをオンにしましょう。
ftp_get(): Illegal PORT command.
パッシブモードについて

アップロード先/ダウンロード元

ftp_loginに使用したユーザのホームディレクトリが起点となる。
例:クライアントユーザをhoge サーバのユーザをfugaとする。

  1. ftp_put($connection, 'hoge.txt', 'fuga.txt', FTP_BINARY)
    クライアントの「/home/fuga/fuga.txt」がサーバに「/home/hoge/hoge.txt」としてアップロードされる
  2. ftp_get($connection, 'fuga.txt', 'home.txt', FTP_BINARY)
    サーバの「/home/hoge/hoge.txt」がクライアントに「/home/fuga/fuga.txt」としてアップロードされる
21
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
27

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?