Windows, XAMPP, PHP 7 и opcache
Я установил последний сервер XAMPP с PHP 7 (обновление: проверено также PHP 7.1) (в моей системе Windows 10). Хотел использовать opcache, поэтому я включил его в php.ini
.
[opcache]
zend_extension=php_opcache.dll
opcache.enable=1
opcache.enable_cli=0
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
Теперь с этим изменением и почти при каждом обновлении страницы я получаю эту ошибку от Apache:
AH00428: Parent: child process 3748 exited with status 3221226356 -- Restarting.
Итак, страница загружается и загружается... в ожидании запуска Apache. Когда я выключаю opcache (установив opcache.enable=0
), Apache не перезагружается и все работает нормально (конечно, пропуская более медленную тему веб-приложения).
Все отлично работает при загрузке приложения на XAMPP с PHP 5.6 с включенным opcache
.
ОБНОВЛЕНИЕ (добавлено GIF-изображение):
Как видите, иногда страница обновляется, как и должно быть. Но иногда он обновляется гораздо дольше, и в этот момент Apache перезапускается.
![enter image description here]()
EDIT:
Если честно, я отказался от этого приложения и работал с PHP на Windows (работал над ним около 10 лет с PHP & lt; = 5.6). Очень трудно/невозможно (пока) заставить работать PHP 7.x на этой ОС (с Opcache). Решил использовать Ubuntu и сервер, созданный с помощью Docker. Все проще настроить (особенно с Docker) и работает быстрее. Всем советую поступить так же;).
Ответы
Ответ 1
Ваш php_opcache.dll
путь кажется неправильным, вам нужно написать его, как показано ниже, он работает для меня.
[opcache]
zend_extension=C:\xampp\php\ext\php_opcache.dll
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.max_accelerated_files=2000
Подробнее
Если ваш XAMPP поставляется с PHP 5. 5+ по умолчанию, opcache уже включен в комплект, вам просто нужно включить его. Чтобы включить расширение:
Откройте php.ini (по умолчанию он должен находиться здесь: C:\xampp\php\php.ini).
Добавьте эту строку в конец файла:
zend_extension=C:\xampp\php\ext\php_opcache.dll
- Перезапустите сервер Apache.
Ответ 2
открыть файл php.ini file
- Измените ; opcache.enable = 1 на opcache.enable = 1
- Добавить путь к opcache dll в конце файла zend_extension = "C:\xampp\php\ext\php_opcache.dll"
- Перезапустите apache
для получения дополнительной информации проверьте это видео https://www.youtube.com/watch?v=GvWrNoRDjUY
Ответ 3
Если честно - не используйте xammp. Прямо сейчас у нас есть немного лучший технический стек для запуска PHP на серверах Linux.
докер
https://docs.docker.com/docker-for-windows/
Vagrant:
https://www.vagrantup.com/
Оба они основаны на Linux-системах, где большинство проблем xammp не будет иметь места.
Ответ 4
В случае Xampp просто поместите следующие строки рядом с [opcache]
zend_extension="C:\xampp\php\ext\php_opcache.dll"
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
Ответ 5
Контейнерный каталог с соответствующими разрешениями и настройкой его работы php.ini!
opcache.file_cache=d:\xampp\htdocs\opcache
Ответ 6
ThreadStackSize 8388608
Помог мне в аналогичном случае. Это опция httpd.