[РЕШЕНО] Drupal и .htaccess - проблемы с протоколами...не обновляется

Главные вкладки

Аватар пользователя qwinto qwinto 20 ноября 2014 в 19:29

Все-таки внизу файла settings.php вставить $conf['drupal_http_request_fails'] = FALSE; заработало. Но думаю проблема будет еще решаться - https://www.drupal.org/node/2379655.

=================

Очень долго ковырялся. несколько писем в тех поддержку хостинга. очень странно вел себя запрос на сайт сервера обновления Drupal. уходил по протоколу одному возвращался по другому. не знаю как будет дальше, посмотрим. что помогло сказать не могу. последние действия - поменял метод запроса в drupal_http_request на POST, обновил, затем обратно сменил. второй день все в порядке. пока так. если что начну новый пост форума.

-----------------

Добрый вечер форумчане. Сложно сказать, что у меня вопрос, но в тоже время и решение проблемы, хотя действительно оно есть(по крайней мере на данный момент). Началось 2-3 дня назад на хостинге REG.RU. Не дает обновляться сайт, появляются ошибки типа "Notice: Undefined offset:1 in drupal_http_request() " с жалобами на линию 984 и "Notice: Undefined offset:1 in drupal_parse_response_status() " на линию 1112 в файле common.inc. Я перелазил кучу форумов аглицких, Drupal.org и нашего сайта (напр. https://www.drupal.org/node/2100947) - [ может есть решение где-то, ткните...]. Но ничего не решается. Писал в тех. поддержку, они пожелали мне откатить все. Сделал - ничего. Ну я то понимаю, что дело в протоколе, либо в какой-то нестыковке с ними. Еще за день до обращения в святая святых поддержки, диагностировал домен через панель хостинга, и выдавало следующее - HTTP(S) Request (http://сайт): [ FAIL ]. Правда после отката стало на ОК, но все равно сайт не обновляется.
Тут вышло обновление 7,34, думаю, ага, может оно решение, либо уже кто-то хакнул сайт, либо просто вылезет из проблемного поля сайт. Ничего. Случайно еще раз перечитал .htaccess, закомментил сие:

#Set "protossl" to "s" if we were accessed via https://. This is used later
# if you enable "www." stripping or enforcement, in order to ensure that
# you don't bounce between http and https.
RewriteRule ^ - [E=protossl]
RewriteCond %{HTTPS} on
RewriteRule ^ - [E=protossl:s]

Обновил и удалили кеш, все заработало. Раскомментировал обратно, все работает, по крайней мере пока. Так что, как я говорил, вроде и решение, вроде и баг какой-то.
Если у кого есть мысли пишите.

Комментарии

Аватар пользователя qwinto qwinto 20 ноября 2014 в 22:18

Прямо театр абсурда...Идем далее, закомментировал теперь в .htaccess

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]

Все опять в норме.

если все будет в норме, как можно создать нечто подобное, чтобы www. ссылкой шло на домен без данного обозначения, чтобы не дублировался в индексе, да и удобнее с одним именем работать. Ссылки в корневом разделе хостинга стоят, но они не работают, либо просто как-то в robots указать сие...?

Аватар пользователя qwinto qwinto 22 ноября 2014 в 0:21

после утренней очистки кеша, все по новой.
Может кто встречался и решил - вот что выдает после запуска cron

Notice: Undefined offset: 1 в функции drupal_http_request() (строка 984 в файле /var/www/ХХХ/data/www/ХХХ/includes/common.inc).
Notice: Undefined offset: 1 в функции _drupal_parse_response_status() (строка 1112 в файле /var/www/ХХХ/data/www/ХХХ/includes/common.inc).
Notice: Undefined offset: 1 в функции drupal_http_request() (строка 984 в файле /var/www/ХХХ/data/www/ХХХ/includes/common.inc).
Notice: Undefined offset: 1 в функции _drupal_parse_response_status() (строка 1112 в файле /var/www/ХХХ/data/www/ХХХ/includes/common.inc).

а ниже:

Внимание. Состояние обновления для модулей и тем.
Сбой при попытке получить обновления.
Возникла проблема с проверкой доступных обновлений для Ваших модулей или тем. Смотрите страницу доступных обновлений для дополнительной информации и установки обновлений.

Внимание. Состояние обновления ядра Drupal.
Сбой при попытке получить обновления.
Возникла проблема с проверкой доступных обновлений для Drupal. Смотрите страницу доступных обновлений для дополнительной информации и установки обновлений.

Аватар пользователя qwinto qwinto 21 ноября 2014 в 15:04

Еще один вариант...
Откатил сайт на хостинге на пару дней, когда начал в принципе ковырять ошибку. Обновил базу данных, удалив с хостинга, заменив на БД с локального сайта. Затем обновил сайт до 7,34. Вроде пока все в норме.

Аватар пользователя qwinto qwinto 21 ноября 2014 в 15:10

Пять минут спустя. Опять ошибки. Написал в тех. поддержку снова - вдруг серверные настройки менялись, либо заменить его надо.

Аватар пользователя rujet rujet 26 ноября 2014 в 17:35

Сделал вот так
<?php print_r(drupal_http_request('https://drupal.org/'));?>

В ответ получил
 stdClass Object ([geshifilter-code] =&gt; 0 [error] =&gt; Ошибка открытия сокета ssl://www.drupal.org:443 [redirect_code] =&gt; 301 [redirect_url] =&gt; https://www.drupal.org/ ) <br> Обращение по http проходит нормально <?php print_r(drupal_http_request(&#039;http://ya.ru&#039;));?><br>  stdClass Object ( [request] =&gt; GET / HTTP/1.0 User-Agent: Drupal (+http://drupal.org/) Host: ya.ru [data] =&gt; [protocol] =&gt; [status_message] =&gt; [headers] =&gt; Array ( ) [code] =&gt; 0 [error] =&gt; )<br> Но так как к обновлениям можно обратиться только по https, то соответственно из возникает ошибка. Я так понимаю это ошибка хостинга?[/geshifilter-code]

Аватар пользователя DD 85 DD 85 3 июля 2015 в 18:55

Подписываюсь.
Тоже reg.ru, те же ошибки.

Notice: Undefined offset: 1 в функции drupal_http_request() (строка 984 в файле /includes/common.inc).
Notice: Undefined offset: 1 в функции _drupal_parse_response_status() (строка 1112 в файле /includes/common.inc).

Аватар пользователя dimmos37 dimmos37 11 октября 2015 в 13:36

Хостинг REG.ru
Ни одно из решений не помогло.
Закономерность хостинга, при установке нового сайта отваливается обновления на всех сайтах площадки.
Для наглядности поставил способ от rujet и написал в службу поддержки, через 15 минут вопрос был снят.

Аватар пользователя filinkov.ru filinkov.ru 22 октября 2015 в 14:36

Решение проблемы не верное. По результатам тестирования удалось достоверно выяснить, что на хостинге REG.RU периодически или по какой то блокировке со стороный провайдера блокируется доступ и не выполняется запрос к серверу $fp = fsockopen("www.drupal.org", 80, $errno, $errstr, 30) - www.drupal.org и не важно http или https. После того как я конкретно указал хостеру на эту проблему в течении часа все само заработало..просто волшебство. Возможно существует белый и черный список адресов на которые можно получать доступ, чтобы ушлые разработчики сайтов не парсили чужой контент со сторонних ресурсов.

Аватар пользователя elin921 elin921 27 октября 2015 в 16:23

У меня возникла такая же проблема. Причем - только на одном сайте (поддомене). На основном всё нормально обновляется.

Аватар пользователя SenJaJahN SenJaJahN 25 января 2016 в 11:11

Состояние обновления для модулей и тем. Сбой при попытке получить обновления.
Возникла проблема с проверкой доступных обновлений для Ваших модулей или тем. Смотрите страницу доступных обновлений для дополнительной информации и установки обновлений.
Предупреждение
Состояние обновления ядра Drupal Сбой при попытке получить обновления.
Возникла проблема с проверкой доступных обновлений для Drupal. Смотрите страницу доступных обновлений для дополнительной информации и установки обновлений.

tmp без слэша, права - 777 менял владельца, удалял, создавал заново ручками, друпалом, менял на sites/default/files/tmp
проксей нет,
вручную - Ошибка при попытке обновления N проектов.
При установке модуля/темы:
Возникла HTTP ошибка -111 при попутке получить https://ftp.drupal.org/files/projects/...
Не могу извлечь Drupal-проект из https://ftp.drupal.org/files/projects/...

модуль cURL проблему не решает
в settings.php
$update_free_access = TRUE; не помогает

Как побороть не знаю.

Аватар пользователя RedRat RedRat 26 января 2016 в 22:51

Та же фигня. На сервере поменялся IP-адрес (переехали в другой офис), сам сайт и ОС остались без изменений. Ни на одном сайте обновление больше не работает. Ошибок в логах нет. Sad

Аватар пользователя anakin anakin 1 февраля 2016 в 11:12

Я пользуюсь хостингом на nic.ru и тоже столкнулся с проблемой, в определенный момент все мои сайты перестали обновляться.
Копался в настройках друпала, в файлах .htaccess, в настройках хостинга, даже сделал маленький PHP-файл с текстом <?php print_r(drupal_http_request('http://drupal.org/'));?> чтобы посмотреть, что вобще происходит при обращении моего сайта к другому сайту. Оказывается ошибка происходит при создании соединения по протоколу SSL. То есть, мы видим сайты в интернете по протоколу HTTP, мы управляем этими сайтами по протоколу FPT или SSH, а один сайт (на друпале) обращается к другому сайту по протоколу SSL.

Решение:
Идем в управление хостингом -> Веб-сервер -> Управление модулями -> PHP (настроить модуль) -> Управление расширениями (активируем галочку "показать все расширения") -> находим модуль openssl и активируем галочку -> сохраняем изменения.

Аватар пользователя RedRat RedRat 1 февраля 2016 в 19:06

anakin wrote:
находим модуль openssl и активируем галочку -> сохраняем изменения.

Подтверждаю, после ручной установки php5-openssl всё заработало.