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

Dis*_*oat 11 php macos opcache php-7.1 macos-high-sierra

我正在使用Mac High Sierra附带的标准Apache和PHP 7.1(不是Homebrew).但是,看起来这个版本没有启用Opcache,即使它应该是PHP 7的标准配置.它甚至列在phpinfo()"模块作者"下,但没有显示它实际安装的部分.调用opcache_get_status会产生致命错误.

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

  • /usr/local/etc/php/7.1/php.ini 用于CLI
  • /etc/php.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
Run Code Online (Sandbox Code Playgroud)

但仍然没有.我跟着xdebug的完全相同的过程,它运行良好.我错过了什么?


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

LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
Run Code Online (Sandbox Code Playgroud)

但该libexec目录不存在.有lib,但非此非彼任何其他目录中有任何.so文件.

kit*_*org 16

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

  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.default"),并修改:
[opcache]
zend_extension = opcache.so
opcache.enable = 1
Run Code Online (Sandbox Code Playgroud)
  1. 重启apache,启用模块"opcache"

编辑/结论

由于默认情况下在Mac OS High Sierra上安装了"opcache extension",因此在Mac OS High 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
Run Code Online (Sandbox Code Playgroud)