Я пытаюсь загрузить файл на удаленный FTP-сервер (для которого требуется FTPES), используя PHP. Написанный мной скрипт работает локально, но на живом сервере ftp_login () возвращает false, и в журнале ошибок появляются следующие предупреждения:
PHP Warning: ftp_login(): failed to create the SSL context [...]
PHP Warning: ftp_login(): AUTH command ok; starting SSL connection. [...]
Я знаю, что данные для входа верны (поскольку идентичный код работает локально). Я могу успешно подключиться к FTP-серверу с живого сервера, используя curl в командной строке.
Сервер работает под управлением PHP 5.3.3 (Zend Server на CentOS). Из phpinfo я вижу, что команда PHP configure включает в себя -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 для этого сервера на самом деле недействителен, так как имя хоста, к которому я подключаюсь, не соответствует общему имени в сертификате. Есть ли где-нибудь настройка PHP, которая контролирует, насколько строго или openSSL относится к ошибкам сертификата? Это может быть единственной проблемой.