Битрикс: Работа с сокетами — Ошибка! Не работает

При использовании BitrixEnv внутри виртуальной среды, с выходом в интернет через NAT (IP-адрес сетевого интерфейса машины с Битриксом отличается от IP в A-записи домена сайта), со стандартными настройками Битрикса, проверка системы будет выдавать ошибку: Работа с сокетами (check_socket): Fail
Для устранения проблемы, в файле /etc/hosts необходимо добавить доменное имя сайта адресу внутренней петли (чтобы сценарий проверки сайта пытался проверить сокет не на шлюзе, а на локальном хосте), по типу:

127.0.0.1 localhost.localdomain localhost site.ru

Битрикс — права на создаваемые файлы

Когда Битрикс создаёт в директории сайта папки и файлы, он назначает на них права доступа в соответствии со значением констант BX_FILE_PERMISSIONS и BX_DIR_PERMISSIONS, заданных в файле /bitrix/php_interface/dbconn.php.
Если права у создаваемых файлов отличаются от установленных в вышеприведённых константах, то вероятно, используется маска сервера, заданная в pam_umask.so или /etc/profile. Если доступа к этим файлам нет, то можно прописать в /bitrix/php_interface/dbconn.php переопределение маски:

umask(000);
@umask(~BX_DIR_PERMISSIONS);

WP Яндекс Метрика: Временная проблема с подключением!

В настройках плагина Яндекс Метрики для CMS WordPress, отображается ошибка: Временная проблема с подключением! Данные с сайта не передаются в Метрику.
Проблема может быть связана с API Яндекса или с вашей учётной записью на Яндексе. Для её решения, перейдите в панели управления сайтом в раздел Настройки и выберите пункт Яндекс Метрика, на открывшейся странице нажмите кнопку Сбросить. После чего вновь дайте плагину права на доступ к вашей учётной записи на Яндексе, путём ввода верификационного кода.

Битрикс: права доступа для мерчандайзера

Требуется создать группу с правами доступа для людей, которые будут заниматься исключительно наполнением товарной номенклатуры на сайте.
В панели администрирования сайта переходим в раздел НастройкиПользователиГруппы пользователей → нажимаем кнопку Добавить группу и заполняем поля
переходим на вкладку Доступ и у Торгового каталога выбираем из выпадающего меню уровень доступа Редактирование цен.
Затем переходим в раздел КонтентСтруктура сайтаМедиабиблиотека и нажимаем кнопку Доступ → у созданной группы выбираем из выпадающего меню уровень доступа Создание новых.
Затем переходим в раздел КонтентСтруктура сайтаФайлы и папкиbitrix → находим папку admin нажимаем на пиктограмму Действия → в открывшемся меню выбираем пункт Права на доступ продукта → для созданной группы из выпадающего меню выбираем права Чтение.

Битрикс: Class ‘Bitrix\Landing\Agent’ not found

После восстановления резервной копии, при открытии сайта, созданного на CMS Битрикс, отображается ошибка: Fatal error: Class ‘Bitrix\Landing\Agent’ not found in /home/sergeyvita/domains/ap-r.ru/public_html/bitrix/modules/main/classes/mysql/agent.php(163) : eval()’d code on line 1.

Временно решить эту проблему можно, отключив выполнение агентов, путём добавления в начало файла agent.php следующей строки:

define(‘NO_AGENT_CHECK’, true);

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

Сторонние ссылки на сайте

Если Вы получили сообщение от Google:

Мы считаем, что Ваш сайт взломан. Вероятно, хакер изменил существующие страницы или разместил на Вашем сайте контент, содержащий спам.

или аналогичное от Яндекса, то стоит проверить страницы своего сайта на факт присутствия ссылок на сторонние сайты, которые Вы не размещали. Причем не только те, которые обнаружил поисковый робот. Как правило это ссылки на коммерческие сайты по впариванию каких-либо сомнительных товаров, типа Canada Pharmacy.
В случае выявления таких ссылок, следует просмотреть исходный код станицы, на которой они отображаются. Навряд ли это будут статические блоки, скорее всего это динамический генерируемый код, упакованный в div или span контейнер, с отличным от остальных элементов html форматом id. Вдобавок к этому, на такой странице может присутствовать ещё и JavaScript код, с какой-либо обработкой контейнера со ссылками. Выделить такой скрипт можно также по использованию не типичного для данной страницы id элемента html.
В случае, если чужеродные ссылки генерируются PHP кодом, искать их в файлах сайта не имеет смысла. Скорее всего ссылки подтягиваются со стороннего ресурса или генерируются определённым алгоритмом. Поиск по id контейнера тоже не имеет смысла, поскольку он также генерируется при каждом обращении к данной странице сайта. В таком случае в файлах сайта следует искать куски контейнеров, элементы чужеродного JS кода. К примеру, командой grep:

grep -rl '<script>(function($){var eventList = ' /var/www/site.ru/

В итоге получаем список файлов, которые могут содержать чужеродный код. Открываем их и смотрим, что там. Стоит также обратить внимание на расположение файла в структуре сайта, это также может быть целый сторонний модуль CMS, например расширение xcalendar в директории plugins/system.
Если удалось идентифицировать файл с вредоносным кодом и выявлено, что файл содержит полностью чужеродный код, то делаем копию таких файлов, удаляем их и проверяем результат, дабы сайт не поломался.

vmError: Failed to retrieve the Currency Converter XML document

При использовании конвертера валют в Джумле не происходит обновления курса (в моём случае использовался файл convertCBRF.php для парсинга котировок с сайта ЦБ РФ), при этом в панели администратора, в разделе Товары, отображается ошибка vmError: Failed to retrieve the Currency Converter XML document.
Для начала требуется проверить, не заблокировал ли сайт ЦБ IP-адрес сервера. Для этого можно попробовать получить данные котировок программой wget (URL, по которому обращается сценарий, указан в самом файле):

cd
wget http://www.cbr.ru/scripts/XML_daily.asp?date_req=12/11/2014

Если сайт ЦБ отдаёт данные (файл скачался и содержит котировки), то можно попробовать вывести значение переменной с необработанными данными. Для этого создаём в директории сайта тестовый php файл, с содержимым:

<?php
header('Content-type: text/xml; charset=windows-1251');
$contents = file_get_contents( 'http://www.cbr.ru/scripts/XML_daily.asp?date_req=12/11/2014' );   
print_r($contents); 
?>

Если при запросе этого файла обозреватель верно отобразит котировки (как на сайте ЦБ), то проблема в коде файла конвертера. Если отобразится ошибка Warning: file_get_contents(): http:// wrapper is disabled in the server configuration by allow_url_fopen=0, то значит на сервере отключён HTTP враппер. Включить его можно, изменив значение в php.ini на allow_url_fopen=0, либо добавив строку php_admin_value[allow_url_fopen] = 1 в конфигурационный файл конкретного сайта, при использовании пула конфигураций PHP-FPM, либо добавить строку php_admin_flag allow_url_fopen On в файл httpd.conf, при использовании PHP в качестве модуля.

Call-time pass-by-reference has been deprecated — argument passed by value.

Данное предупреждение говорит о том, что передача аргументов по ссылке во время вызова функции была объявлена устаревшей. Избавиться от этого предупреждения можно убрав в указанной строчке символ & перед именем переменной, передаваемой в какую-либо функцию.

Notice: Undefined index: ORIG_PATH_TRANSLATED in…

Данная ошибка порой встречается на различных CMS. Она возникает, когда сервер не отдает CMS значение глобальной переменной $_SERVER[‘ORIG_PATH_TRANSLATED’], а программа CMS не проверяет существование этой переменной. Проблему можно решить двумя способами:

  • изменить в коде проблемного файла имя переменной $_SERVER[‘ORIG_PATH_TRANSLATED’] на иную, например $_SERVER[‘ORIG_SCRIPT_FILENAME’];
  • настроить на сервере переменную $_SERVER[‘ORIG_PATH_TRANSLATED’], например, при использовании nginx, прописать в файле fastcgi_params строку
    fastcgi_param ORIG_PATH_TRANSLATED $document_root$fastcgi_script_name;