PHP を使用してリモート FTP サーバー (FTPES が必要) にファイルをアップロードしようとしています。私が書いたスクリプトはローカルで動作しますが、ライブ サーバーでは ftp_login() が false を返し、次の警告がエラー ログに表示されます。
PHP Warning: ftp_login(): failed to create the SSL context [...]
PHP Warning: ftp_login(): AUTH command ok; starting SSL connection. [...]
ログインの詳細が正しいことはわかっています (同一のコードがローカルで動作するため)。コマンドラインでcurlを使用して、ライブサーバーからFTPサーバーに正常に接続できます。
サーバーは PHP 5.3.3 (CentOS 上の Zend サーバー) を実行しています。phpinfo から、PHP 構成コマンドに -with-openssl=/usr/local/openssl-0.9.8o が含まれていることがわかります。
コードは次のとおりです。
$ftpConnection = ftp_ssl_connect('hostname');
if (!$ftpConnection) {
echo "Failed to connect to FTP Site\n";
return false;
}
if (!ftp_login($ftpConnection, 'xxxxx', 'xxxxx')) {
echo "Failed to login to FTP site\n";
return false;
}
参考までに、私のローカル ボックス (これは正常に動作します) は PHP 5.3.3-1ubuntu9.3 を実行しています。
誰かが私を正しい方向に向けることができますか?
編集:接続先のホスト名が証明書の共通名と一致しないため、このサーバーのSSL証明書が実際には有効ではないことに気付きました。それまたは openSSL が証明書エラーに関してどれほど厳密かを制御する PHP 設定はどこかにありますか? それが唯一の問題かもしれません。