Помощь со скриптом на 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.