Bitrix ошибка «Размер стека и pcre.recursion_limit» и Ubuntu 14.04

У 1C-Битрикс есть свой инструмент проверки того как настроен сервер. Находится он по адресу

/bitrix/admin/site_checker.php

Однажды на свежей Ubuntu 14.04 с установленным php-fpm он показал мне ошибку «Размер стека и pcre.recursion_limit», которая часто решается походом в

/etc/security/limits.conf
и установлением нужных значений. Но оказалось это не мой вариант.

Еще вариант про который часто пишут в сети - это пойти в initd-скрипт php-fpm и сделать там

ulimit -s unlimit
но вот беда, php-fpm при рестарте почему-то не подхватывал этот свежевписанный параметр.

Оказалось что в моем дистрибутиве php-fpm инициализируется через демон upstart и при этом не учитывает что мы там ему понапишем в секции do_start() если внимательно вглядеться в код /etc/init.d/php5-fpm мы и увидим ту злополучную секцию, которая плевала на do_start() и наш ulimit -s unlimit.

if init_is_upstart; then
    exit 1
fi

Рабочее решение этой ситуации у меня сложилось следующее:

  • в /etc/init.d/php5-fpm закомментировал секцию if init_is_upstart;
  • Добавил в do_start() ulimit -s 102400 (тут почему-то не подхватился unlimited, так что я просто обошелся удовлетворяющим потребности битрикса числом)
  • update-rc.d -f php5-fpm remove
  • удалил /etc/init/php5-fpm.conf
  • update-rc.d php5-fpm defaults

{{ message }}

{{ 'Comments are closed.' | trans }}