Перейти к публикации

Oдна конфигурация сервера


Рекомендованные сообщения

Добрый день.

 

Не знаю баг это или не баг решать разработчикам.

 

Совсем недавно хостинг Reg.ru обновлял серверные платформы и делал переносы сайтов и проблема заключалась в том, что сайт изначально работал по протоколу http , но при открытие любой новости, ссылка открывалась по протоколу https, из-за этого половина сайта не работала. Забросав тех поддержку вопросами о данной проблеме, они сначала в нее не верили, говорили, что это кэш и его надо чистить, но когда предоставили доказательства, что из разных браузеров и разных устройствах эта проблема есть, естественно они начали шевелиться...

 

Проблема заключалась в том, что скрипты сайта не были рассчитаны на одну конфигурацию сервера. Это недочёт в скриптах, подробнее:
Скрипты вашего сайта считали, что обращение к сайту производилось по HTTPS протоколу, хотя обращения было по HTTP. Причина в логике работы функции isSSL. Вот данная функция(файл /var/www/test/public_html/engine/modules/functions.php

 


3093 function isSSL() {
3094     if( (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
3095         || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
3096         || (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] == 'on')
3097         || (isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443)
3098         || (isset($_SERVER['HTTP_X_FORWARDED_PORT']) && $_SERVER['HTTP_X_FORWARDED_PORT'] == 443)
3099         || (isset($_SERVER['REQUEST_SCHEME']) && $_SERVER['REQUEST_SCHEME'] == 'https')
3100                 || (isset($_SERVER['CF_VISITOR']) && $_SERVER['CF_VISITOR'] == '{"scheme":"https"}')
3101                 || (isset($_SERVER['HTTP_CF_VISITOR']) && $_SERVER['HTTP_CF_VISITOR'] == '{"scheme":"https"}')
3102     ) return true; else return false;
3103 }

 

Пробуем вызвать данную функцию вне остального движка, что бы исключить его влияние на проблему:

 

test@test.test3.cp.regruhosting.ru [~/public_html]# cat test.php
<?php
define(„DATALIFEENGINE“,true);
include_once(„engine/modules/functions.php“);
var_dump(isSSL());
test@test.test3.cp.regruhosting.ru [~/public_html]#

 

Вот такой ответ получаем на выходе:

 

:~$ curl http://www.site.ru/test.php
bool(true)
:~$

 

Функция вернула true на проверку HTTPS соединения с сайтом. Почему так произошло? -
Проверяем переменную $_SERVER[„HTTPS“] которую скрипты получают от сервера:

 

test@test.test3.cp.regruhosting.ru [~/public_html]# cat test.php 
<?php
var_dump($_SERVER['HTTPS']);
test@test.test3.cp.regruhosting.ru [~/public_html]#

 

Получаем такой ответ:

 

:~$ curl http://www.site.ru/test.php
string(3) "Off"
:~$ 

 

Возвращаемся к телу функции и видим такую проверку:

 

3094     if( (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')

 

Разработчики DLE не сделали проверку на Off (речь идёт о регистре букв, тк off в php не равняется Off). Немного скорректировали данную проверку:

 

3094     if( (!empty($_SERVER['HTTPS']) && ( ($_SERVER['HTTPS'] !== 'off') && ($_SERVER['HTTPS'] !== 'Off')))

 

После этого потребовалось отчистить кэш CMS. Сделали это через удаление файлов engine/cache/system/

Изменено пользователем Dodger
Ссылка на сообщение
Поделиться на других сайтах

Системный администратор сервера "скреативил" прописал значение настроек сервера по непонятным причинам с большой буквы, их нужно либо не ставить в данном случае, либо как принято, писать значения маленькими буквами. Он мог написать там и OFF и OfF для сервера это все равно, а вот для корректного чтения этих настроек уже могут быть проблемы. Как правило так не не креативят в настройках сервера. 

 

За несколько лет существования этой функции, это первый такой "креатив" на практике. В DLE будет добавлены механизмы контроля от подобной вольной интерпретации написания серверный настроек.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...