it-swarm.com.ru

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.

EDIT (добавлено GIF изображение):
Как видите, иногда страница обновляется, как и должно быть. Но иногда он обновляется гораздо дольше, и Apache перезапускается в этот момент.

 enter image description here

Правка:
Если честно, я отказался от этого приложения и работал с PHP в Windows (работал над ним около 10 лет с PHP <= 5.6). [На данный момент] очень трудно/невозможно заставить PHP 7.x работать на этой ОС (с Opcache). Решил использовать Ubuntu и сервер, созданный с помощью Docker. Все проще в настройке (особенно с Docker) и работает быстрее. Я советую всем делать то же самое;).

7
Krzysztof Trzos

Ваш 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 уже включен в комплект, вам просто нужно включить его. Чтобы включить расширение:

  1. Откройте php.ini (по умолчанию он должен находиться здесь: C:\xampp\php\php.ini).

  2. Добавьте эту строку в конец файла: zend_extension = "C:\xampp\php\ext\php_opcache.dll"

  3. Перезапустите сервер Apache.
9
Key Shang

открыть файл php.ini

  1. Измените ; opcache.enable = 1 на opcache.enable = 1
  2. Добавить путь к opcache dll в конце файла zend_extension = "C:\xampp\php\ext\php_opcache.dll"
  3. Перезапустите Apache

для получения дополнительной информации проверьте это видео https://www.youtube.com/watch?v=GvWrNoRDjUY

2
Kailas

Если честно - не используйте xammp. Прямо сейчас у нас есть немного лучший технический стек для запуска PHP на серверах Linux. Docker https://docs.docker.com/docker-for-windows/

Бродяга: https://www.vagrantup.com/

Оба они основаны на системах Linux, где большинство проблем xammp не будет иметь места.

1
BlackWebWolf
ThreadStackSize 8388608 

Помог мне в подобном случае. Это опция httpd.

0
Sergey Matunin

В случае 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
0
Wasim Khan

Создание каталога с соответствующими правами доступа и настройка php.ini работали!

opcache.file_cache=d:\xampp\htdocs\opcache
0
Chetan Bhosale