На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Помощь со скриптом на 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





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




Программа Карточный помощник
Опасность готовых скриптов для сайта


© upread.ru 2013-2021
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.