Ошибки при включении zend_opcache на php-fpm с апачскими 2,4 прокси

Я настраиваю веб-сервер для хостинга нескольких небольших сайтов (главным образом Wordpress) путем соединения php-fpm 5.5.9 и апачские 2.4.10 на человечности.

После чтения хорошей суммы учебных руководств и сообщения, я решил установить php-fpm, чтобы выполнить сокет на веб-сайт и использовать mod_proxy_fcgi на апаче для перенаправления запросов к php-fpm.

<LocationMatch "^(.*\.php)$">
ProxyPass unix:///var/run/php5-fpm-saintsein.com.sock|fcgi://127.0.0.1:9000/home/saintsein/public_html/
</LocationMatch>

Я получил все работающее почти гладко, но после того как я включаю Пехлеви Opcache в php конфигурации. Я случайным образом получаю сообщения об ошибках на веб-сайте.

Единственная запись в журнале, которую я получаю, является этим:

Connection reset by peer: [client 194.78.30.55:55202] AH01075: Error dispatching request to : 

Я осматривал сеть, и я не мог найти никого с этой определенной ошибкой к состоянию Zend Opcache.

У кого-либо есть какая-либо идея того, что могло быть неправильным? Или как я могу отладить его?

0
задан 12 July 2015 в 18:41
1 ответ

Когда я сталкивался с подобными проблемами в наших средах, это, похоже, было связано с тем, как OpCache (по умолчанию) использует один кеш для всех пользователей в среде общего хостинга. Сообщается об ошибке (и вы можете и должны пойти и проголосовать, чтобы сообщить сопровождающим, насколько это важно для вашего варианта использования), хотя никаких обязательств по доставке исправления не было принято.

TL; DR: по умолчанию, когда OpCache включен, кеш, который используется для хранения скомпилированного байтового кода, является общим для всех пользователей. В среде, где хостинг совместно используется несколькими сайтами / пользователями, это может привести к тому, что сайт захватит кэшированный вывод php-скриптов с другого сайта или, если включены определенные параметры безопасности, даже приведет к возникновению ошибок . Если вы планируете использовать PHP-FPM со встроенным opcache PHP 5.5+, пожалуйста, прочтите сообщение в блоге ниже, прежде чем вы действительно это сделаете. Оказывается, кэш опкодов может прочитать любой пользователь на сервере. Это означает, что если есть, скажем, 10 отдельных пользователей со своими собственными vhosts и каталогами, и вы настраиваете один пул PHP-FPM для каждого пользователя, каждый пользователь все равно может видеть, какие скрипты кэшированы и их расположение. Поскольку у них есть доступ на чтение кэш-памяти, они потенциально могут просматривать все эти данные.

Это, очевидно, серьезная проблема безопасности, и даже если никто не воспользуется этим, все равно существует вероятность того, что скрипты будут прочитаны неправильным пользователем при создании страницу, поэтому веб-сайты могут отображать неправильные данные / информацию, если в кеше есть несколько скриптов index.php.

Хотя официально исправлений не было, если вы используете cPanel, эта вики документированный способ настройки пулов php-fpm для создания и защиты для каждого пользователя , и если вы будете следовать приведенным ниже инструкциям, а также ВАЖНЫЕ ПРИМЕЧАНИЯ внизу этого ответа, вы должен иметь возможность получить желаемую функциональность без каких-либо ошибок

В этом сообщении также описывается, как вы можете настроить это вручную для каждого сайта / пользователя (хотя я готов поспорить, что это может стать утомительным, если вы хостинг очень много сайтов). Если вы не используете cPanel, вам может потребоваться изменить сценарии, чтобы указать ваши индивидуальные пути и имена пользователей вместо переменных, используемых механизмом конфигурации cPanel.


ВАЖНЫЕ ЗАМЕЧАНИЯ

Во время тестирования и дополнительных исследований я обнаружил , в этой статье дается несколько пояснений , которые могут иметь отношение к вашей конкретной ситуации:

  1. Вам необходимо убедиться, что параметр opcache.use_cwd имеет значение true ] для конфигурации OpCache вашего приложения - по умолчанию для него установлено значение false , и если оставить его по умолчанию, это, вероятно, вызовет коллизии, если в вашей системе размещено более одного приложения PHP:

Прежде всего , вероятно, в каждом типичном проекте вам нужно будет убедиться, что для параметра opcache.use_cwd установлено значение true. Включение этого параметра означает, что механизм OpCache будет проверять полные пути к файлам, чтобы различать файлы с одинаковыми именами. Установка значения false приведет к конфликтам между файлами с одним и тем же базовым именем.

  1. Если вы запускаете приложение на базе Zend Framework или другой подобной платформы, которая использует аннотации, вам ТАКЖЕ необходимо убедиться, что Директивы opcache.load_comments и opcache.save_comments имеют значение true . Вам следует перепроверить это предложение с документацией по вашему приложению / фреймворку, поскольку большинство из них теперь обновили свои документы конкретными инструкциями по включению правильного использования OpCache для своих систем:

Также есть параметр, который важен в инструментах и ​​фреймворках, которые использовать аннотации. Если вы используете Doctrine, Zend Framework 2 или PHP Unit, не забудьте установить для параметров opcache.load_comments и opcache.save_comments значение true. В результате,комментарии к документации из ваших файлов также будут включены в предварительно скомпилированный код, созданный OpCache. Этот параметр позволит вам работать с аннотациями без каких-либо сбоев.

Если ваш проект основан на определенной структуре или веб-приложении, всегда рекомендуется проверять документацию на предмет каких-либо рекомендаций относительно конфигурации OpCache

ВАЖНО ПРИМЕЧАНИЯ


Надеюсь, это помогло - и если вы используете cPanel, оставьте комментарий, чтобы сообщить нам, как вы справились с этой частью конфигурации! См. Также этот вопрос и связанные с ним комментарии .

0
ответ дан 5 December 2019 в 13:00

Теги

Похожие вопросы