Блог CREATIVE
Статьи Разработка Интересное

Nginx, php-fpm, opcache и символические ссылки




Столкнулись с такой проблемой: при автоматическом развертывании проекта с использованием символических ссылок (например, с помощью capistrano) на сервере с установленными nginx + php-fpm и включенным OPcache возникают странные ошибки вроде «Can’t redeclare class».


Не помогает ничего, кроме перезапуска php-fpm или вызова opcache_reset(). После поиска причин, удалось установить, что баг связан именно с тем, что OPcache неверно воспринимает пути с символическими ссылками. Подробнее описано здесь (ZendOptimizerPlus issue #126).

Помогает использование $realpath_root в настройках nginx:



fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;