サービスにアクセスできるかどうかを定期的に確認するには、単純な telnet で十分です。ftp を話す必要さえありません。本当にファイルをアップロードしたい場合は、スクリプトで使用される ftp コマンド ライン クライアントを使用するのが最も簡単です。スクリプトはどの言語でもかまいません。
また、 checktlsサービスを調べる価値があるかもしれません。TLS 接続をテストできます。コマンドのリストを一緒にクリックできます。この場合、'USER: someone' や 'PASS: somepass' などの従来の ftp コマンド。
Filezilla クライアントは、明示的または暗黙的な tls の使用を指定することを提案します。FileZilla Wikiの説明から:
明示的 vs 暗黙的 FTPS
FTPS (SSL/TLS) は、互換性のない 2 つのモードで提供されます。明示的な FTPS を使用する場合、クライアントは通常の FTP ポートに接続し、「AUTH TLS」を使用して明示的にセキュア (SSL/TLS) モードに切り替えます。一方、暗黙的な FTPS は、最初から SSL/TLS モードを前提とする古いスタイルのサービスです。接続します (通常、TCP ポート 21 ではなく 990 でリッスンします)。FileZilla クライアントでは、これはホストの前に「FTPES://」を付けて「明示的」FTPS サーバーに接続するか、「FTPS://」をレガシーの「暗黙的」サーバーに接続することを意味します (これには、 990 へのポート)。
そして、これはphps cURL拡張を使用したcURL pasedソリューションです。
// $handle: the file to upload
$handle = fopen ( $path, 'r' );
// $url: the ftps url to connect to (without credentials)
$url = sprintf ( 'ftps://%s/%s', $server, $filename );
// the ftp connection
$session = curl_init ( );
// connection details
curl_setopt ( $curl_session, CURLOPT_URL, $url );
curl_setopt ( $curl_session, CURLOPT_USERPWD, sprintf( '%s:%s', $user, $pass );
curl_setopt ( $curl_session, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $curl_session, CURLOPT_SSL_VERIFYHOST, FALSE );
curl_setopt ( $curl_session, CURLOPT_FTP_SSL, CURLFTPSSL_TRY );
curl_setopt ( $curl_session, CURLOPT_FTPSSLAUTH, CURLFTPAUTH_TLS );
curl_setopt ( $curl_session, CURLOPT_UPLOAD, 1 );
curl_setopt ( $curl_session, CURLOPT_INFILE, $handle );
// execute the connection
$output = curl_exec ( $session );
// check for errors
$error = curl_errno ( $session );
// close connection
curl_close ( $session );
このアプローチの利点は、自動化できることです。たとえば、cron ジョブとして呼び出します。