如何在 MacOS High Sierra 上安装 PHP Opcache?

How to install PHP Opcache on MacOS High Sierra?

我使用的是 Mac High Sierra 附带的标准 Apache 和 PHP 7.1(不是 Homebrew)。然而,这个版本似乎没有启用 Opcache,即使它应该作为 PHP 7 的标准配置。它甚至在 "Module Authors" 下的 phpinfo() 中列出,但没有部分显示它实际上是安装。调用 opcache_get_status 会出现致命错误。

我已经通过 Homebrew 安装了扩展程序,并链接了 opcache.so 文件。它似乎在 CLI 上工作,但在 Apache 中不起作用。出于某种原因,CLI 和 Web 使用不同的 ini 文件:

CLI 正在解析包括 /usr/local/etc/php/7.1/conf.d/ext-opcache.ini 在内的附加文件,php -i 显示 Opcache。但是 phpinfo() 在浏览器中不会 - 没有额外的 ini 文件被解析。

我目前在 /etc/php.ini 中有这个:

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

但还是一无所获。我对 xdebug 遵循了完全相同的过程,并且工作正常。我错过了什么?


我想知道使用 PHP 的 Homebrew 版本是否会更容易。但我似乎没有所需的 .so 文件。各种教程说把这个放在 Apache 的 httpd.conf:

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

但是libexec目录不存在。有 lib 但此目录和任何其他目录都没有任何 .so 文件。

对我来说,它通过以下步骤起作用:

  1. 在"phpinfo()"页面搜索extension_dir,找到路径 /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. 时安装的
  4. 创建“/etc/php.ini”(复制“/etc/php.ini.default”),并修改:
[opcache]
zend_extension = opcache.so
opcache.enable = 1
  1. 重新启动 apache,模块 "opcache" 已启用

编辑/结论

由于"opcache extension"默认安装在MacOSHigh Sierra上,在MacOSHigh Sierra上启用opcahe的解决方案是:

  • 创建“/etc/php.ini”,如果没有,只需复制默认配置:sudo cp /etc/php.ini.default /etc/php.ini
  • zend_extension = opcache.so添加到/etc/php.ini并设置"opcache"启用:

php.ini opcache 部分如下所示:

[opcache]
zend_extension = opcache.so
opcache.enable = 1