【php】FTPSで接続はできてファイル転送ができない
問題
phpでFTPSしようとしています。
接続はできているはずですが、ファイル転送をすると空のファイルができているなど、挙動がおかしいです。
以下のようなメッセージでエラーが発生することもあります。内容はOKなのにエラー?
ftp_put(): Ok to send data.
答え
phpに限らず、FTPSクライアント側が require_ssl_reuse なサーバーに対応していないとファイルを転送できずエラーになります。
エラー例:
(522) 522 SSL connection failed; session reuse required: see require_ssl_reuse option in vsftpd.conf man page
転送接続にデータを書き込めません: 既存の接続はリモート ホストに強制的に切断されました
FTPSクライアントがコントロールコネクションで認証されたSSLセッションをデータコネクションで再利用できないので発生。
サーバー側で対応するには、 require_ssl_reuse=No の設定をする。セキュリティは少し落ちる。
クライアント側で対応するには、require_ssl_reuse に対応する必要があり、phpは 5.6.26や7.0.11で解消された。
コメント