Проблема Zend OPcache (Windows Server 2012 + IIS + Plesk + PHP 7)

Я только что обновился до PHP 7 и нашел его хорошим и быстрым, но с тех пор, как я обновился, я периодически получаю внутреннюю ошибку сервера (500) (с полностью неизмененным кодом). Я регистрирую ошибки, и в обычном журнале ничего не появляется, но в средстве просмотра событий у меня их тысячи:

The description for Event ID 487 from source Zend OPcache cannot be found. Either the component that raises this event is not installed on your local computer or the installation is corrupted. You can install or repair the component on the local computer.

If the event originated on another computer, the display information had to be saved with the event.

The following information was included with the event: 

Base address marks unusable memory region. Please setup opcache.file_cache and opcache.file_cache_callback directives for more convenient Opcache usage
Attempt to access invalid address.

Я предполагаю, что либо я что-то неправильно настроил, либо что-то ушло с обновлением. Любая помощь будет абсолютно фантастической и очень признательна.


person DugoutSoccer    schedule 10.03.2016    source источник
comment
Удалось ли вам выяснить эту ошибку? Я получаю то же самое.   -  person Rocket04    schedule 25.03.2016
comment
@ Rocket04 Ах да, это была моя конфигурация PHP.ini. Поскольку я запускаю его на сервере Windows, конфигурация по умолчанию совершенно неверна. Я опубликую конфиг, который работает в данный момент.   -  person DugoutSoccer    schedule 27.03.2016


Ответы (4)


Мне нужно было добавить/изменить мой php.ini, чтобы включить следующее. Я нашел это на сайте о "Moodle"... что бы это ни было.

Я надеюсь, что это полезно для некоторых людей там!

opcache.enable=1
zend_extension="C:\Program Files (x86)\Parallels\Plesk\Additional\PleskPHP70\ext\php_opcache.dll"

opcache.memory_consumption = 128
opcache.max_accelerated_files = 4000
opcache.revalidate_freq = 60

; Required for Moodle
opcache.use_cwd = 1
opcache.validate_timestamps = 1
opcache.save_comments = 1
opcache.enable_file_override = 0
opcache.revalidate_path = 1 ; May fix problems with include paths
opcache.mmap_base = 0x20000000 ; (Windows only) fix OPcache crashes with event id 487
person DugoutSoccer    schedule 26.03.2016
comment
Так же, как FYI, обязательно проверьте, какова ваша фактическая конфигурация PHP, прежде чем слепо использовать значения выше. В большинстве случаев значения по умолчанию должны быть в порядке, это только значение opcach.mmap_base, которое необходимо для устранения сбоев. Также см. проблему ZendOptimizerPlus #167, чтобы получить более подробную информацию об этой проблеме, если вы все еще видеть проблемы. - person Ben Randall; 01.12.2016
comment
FYI Moodle — это система управления обучением. Используется для проведения онлайн-курсов для студентов... - person luisdev; 05.07.2018

Существует также https://bugs.php.net/bug.php?id=72645

Это можно обойти, отключив opcache для другой версии PHP (5.4, 5.5, 5.6) или переключив выделенные пулы для каждого сайта IIS.

person Oleg Neumyvakin    schedule 11.03.2016
comment
Пожалуйста, уточните немного ваше предложение. Насколько я знаю, мы используем opcache на всех наших сайтах с PHP 5.6 без проблем. - person Franc Drobnič; 26.01.2017
comment
@FrancDrobnič Существует известная проблема, заключающаяся в том, что OpCache и Wincache не могут работать с разными версиями PHP на сайтах IIS, которые используют один и тот же пул приложений IIS. Если у вас есть выделенные пулы для каждого сайта - должно быть все ОК. - person Oleg Neumyvakin; 26.01.2017
comment
Что ж, к счастью, помимо выделенных пулов для каждого сайта, мы действительно используем ApplicationPoolIdentity, как было предложено Microsoft, и поэтому, согласно подробному объяснению, которое дал пользователь ab в отслеживании ошибок, мы защищены от этой ошибки. Спасибо за объяснение. - person Franc Drobnič; 26.01.2017

Я исправил такую ​​же проблему для программного обеспечения OroCRM с opcache.enable_cli = 0.

person Mage2.PRO    schedule 16.05.2017

opcache.file_cache="C:\Windows\temp\php_opcache"
opcache.file_cache_fallback=1

Используйте для справки и настройки opcache:https://www.php.net/manual/en/opcache.installation.php

person Sameer Kumar Choudhary    schedule 17.04.2020