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_connect
に implicit mode
オプションなんてない。絶望。
と思いきや、先人がいい感じのライブラリを作ってくれていた。
https://github.com/nalindaDJ/php-FTP-implicit-ssl-tls
上記ライブラリを使用すれば、 implicit mode
でFTPS接続できる。
環境
php -m
をコマンドラインで実行して、 curl
と openssl
がないといけない。
ftp
も必要かもしれない。モジュールが必要ということ。
- curl
- openssl
- ftp
おまけ
lftp
でテストしてた。
lftp
は、 open ftps://hogehoge.com
のようにすると、implicit mode
で接続する。
set ftp:ssl-allow yes
をセットして、 open hogehoge.com
のように接続すると、explicit mode
FTPSで接続するらしい。
こちらは未検証。ごめんなさい。