Помощь со скриптом на php, или необычные проблемы в обычном месте


Мне нравится помогать владельцам сайтов, особенно, если проблема не самая обычная. А возникнуть может проблема с сайтом в самом неожиданном месте. В этой небольшой заметке я расскажу о встраивании одного скрипта на PHP и несовместимости OpenSSL и TLS.

Итак, утро началось как обычно: заказчик попросил встроить скрипт на свой сайт. Скрипт подключается подключается с помощью CURL к удаленному сайту, отправляет номер телефона и номер заявки, затем берет с него некие данные и выводит их посетителю. Что может быть проще?

Однако, началось все с того, что скрипт вообще ничего не выдавал на месте формы, с которой должно отправляться сообщение удаленному сайту. Вообще ничего – просто белый экран, хотя вывод ошибок включен. Ну что ж, начинаем искать ошибку построчно и доходим до … комментариев. Оказывается, если обработчик PHP на сервере сайта доходил до однострочного комментария, то просто прекращал работу. Наверняка что-то было в логах, но я не стал рыться там и просто убрал их – в конце концов здесь отсутствие комментариев некритично.

После удаления комментариев форма стала выводиться. Отлично! Но возникла другая проблема – скрипт ничего не выводил после подключения к удаленному сайту через курл – опять же белый экран. Что ж, здесь недолго сделать вывод номера и текста ошибки. Вот, кстати, код для курла стандартный:

Смотрим ошибку:



curl: (35) Unknown SSL protocol error in connection
Окей. Отключаем дополнительные проверки SSL:

CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
Узнаем версию TLS:



Ставим её в настройках курла:

CURLOPT_SSLVERSION => CURL_SSLVERSION_SSLv2
И.. и ничего. Снова ошибка 35. А интересно, какая на самом деле версия SSL у курла? Определяем:

$v = curl_version(); 
print $v['ssl_version'];
Выходит: OpenSSL/0.9.7e35. оппа! А ведь они же не коннектятся! OpenSSL ниже чем 1.0.1 не поддерживает TLS 1.2.

Что делать? А тут, так как хостинг шаред и мы даже не можем управлять версиями и настройками PHP, то приходится обращаться к техподдержке. Она переводит PHP на версию 5.6, на сервер с поддержкой TLS 1.2, и скрипт начинает отрабатывать корректно.

Заключение

Вы можете спросить: а почему бы сразу не обратиться к техподдержке? Дело в том, что за редкими исключениями техподдержка хостинга не будет заниматься вашими скриптами, а если и будет, то сделает это за немалую сумму и не очень быстро. Так что вам с любой стороны выгоднее обратиться ко мне – разберёмся с любой проблемой на сайте быстро и недорого. Смотрите контакты на этой странице и пишите – решим все проблемы!
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, php, решение проблем, ssl




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 40. Управление битами с помощью BitArray C#
Что такое диод и для чего он используется?
Калькулятор на C++ (windows forms) в visual studio