Как установить PHP Opcache на macOS High Sierra?


Я использую стандартный Apache и PHP 7.1 (не доморощенный), который поставляется с Mac High Sierra. Однако, похоже, что в этой версии не включена функция Opcache, хотя она должна входить в стандартную комплектацию PHP 7. Он даже указан в phpinfo() в разделе "Авторы модулей", но ни в одном разделе не показано, что он действительно установлен. Вызов opcache_get_status приводит к фатальной ошибке.

Я установил расширение через Homebrew и связал файл opcache.so. Похоже, он работает в командной строке, но не в Apache. Для по какой-то причине интерфейс командной строки и веб-интерфейс используют разные ini-файлы:

  • /usr/local/etc/php/7.1/php.ini для интерфейса командной строки
  • /etc/php.ini для Интернета

Интерфейс командной строки анализирует файлы добавления, включая /usr/local/etc/php/7.1/conf.d/ext-opcache.ini, и php -i показывает кэш операций. Но phpinfo() в браузере этого нет - никакие дополнительные ini-файлы не анализируются.

В настоящее время у меня есть это в /etc/php.ini:

[opcache]
zend_extension="/usr/local/opt/php71-opcache/opcache.so"
opcache.enable=1

Но все равно ничего. Я следовал точно такому же процессу для xdebug, и он работал нормально. Чего мне не хватает?


Интересно, если это было бы проще использовать домашнюю версию PHP. Но у меня, похоже, нет необходимого файла .so. Различные учебные пособия говорят, чтобы поместить это в Apache httpd.conf:

LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so

Но каталог libexec не существует. Существует lib, но ни в этом, ни в любом другом каталоге нет файла .so.

Author: DisgruntledGoat, 2017-12-13

1 answers

Для меня это сработало с помощью следующих шагов:

  1. Поиск extension_dir на странице "phpinfo()" у меня есть путь /usr/lib/php/extensions/no-debug-non-zts-20160303
  2. Выполнив ls -lh /usr/lib/php/extensions/no-debug-non-zts-20160303, я нашел"opcache.so ", я предполагаю, что он установлен при обновлении до "High Sierra"
  3. Создайте "/etc/php.ini" (скопировав "/etc/php.ini.по умолчанию") и измените:
[opcache]
zend_extension = opcache.so
opcache.enable = 1
  1. Перезапустите apache, модуль "opcache" включен

РЕДАКТИРОВАНИЕ / ЗАКЛЮЧЕНИЕ

Поскольку "расширение opcache" является установленный в Mac OS High Sierra по умолчанию, решение для включения opcahe в Mac OS High Sierra:

  • Создайте "/etc/php.ini", если у вас его нет, просто скопируйте конфигурацию по умолчанию: sudo cp /etc/php.ini.default /etc/php.ini
  • Добавьте zend_extension = opcache.so в /etc/php.ini и установите "opcache" включить:

Раздел opcache Php.ini выглядит следующим образом:

[opcache]
zend_extension = opcache.so
opcache.enable = 1
 12
Author: kite.js.org, 2017-12-16 04:34:24