LoginSignup
2
2

More than 5 years have passed since last update.

PHPでFTPS接続でなぜかタイムアウトして辛かった

Posted at

ftp_ssl_connect でFTPS接続しようとして、タイムアウトで FALSE が帰ってきた。原因が判明したのでメモ。

ftp_ssl_connect の公式リファレンス。
http://php.net/manual/ja/function.ftp-ssl-connect.php

接続先はimplicit modeではありませんか?

ftp_ssl_connect はリファレンスに何も書いてないけど、 explicit mode で接続するらしい。
接続先が implicit mode で待受していると、 ftp_ssl_connect してもタイムアウトで FALSE が帰ってく来てしまう。

じゃあどすればいいのさ

ftp_ssl_connectimplicit mode オプションなんてない。絶望。
と思いきや、先人がいい感じのライブラリを作ってくれていた。
https://github.com/nalindaDJ/php-FTP-implicit-ssl-tls

上記ライブラリを使用すれば、 implicit mode でFTPS接続できる。

環境

php -m をコマンドラインで実行して、 curlopenssl がないといけない。
ftp も必要かもしれない。モジュールが必要ということ。

  • curl
  • openssl
  • ftp

おまけ

lftp でテストしてた。
lftp は、 open ftps://hogehoge.com のようにすると、implicit mode で接続する。

set ftp:ssl-allow yes をセットして、 open hogehoge.com のように接続すると、explicit mode FTPSで接続するらしい。
こちらは未検証。ごめんなさい。

2
2
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
2
2