Как установить 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
.
1 answers
Для меня это сработало с помощью следующих шагов:
- Поиск
extension_dir
на странице "phpinfo()" у меня есть путь/usr/lib/php/extensions/no-debug-non-zts-20160303
- Выполнив
ls -lh /usr/lib/php/extensions/no-debug-non-zts-20160303
, я нашел"opcache.so ", я предполагаю, что он установлен при обновлении до "High Sierra" - Создайте "/etc/php.ini" (скопировав "/etc/php.ini.по умолчанию") и измените:
[opcache] zend_extension = opcache.so opcache.enable = 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