如何在 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 文件:
/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
但还是一无所获。我对 xdebug 遵循了完全相同的过程,并且工作正常。我错过了什么?
我想知道使用 PHP 的 Homebrew 版本是否会更容易。但我似乎没有所需的 .so
文件。各种教程说把这个放在 Apache 的 httpd.conf
:
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
但是libexec
目录不存在。有 lib
但此目录和任何其他目录都没有任何 .so
文件。
对我来说,它通过以下步骤起作用:
- 在"phpinfo()"页面搜索
extension_dir
,找到路径
/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.default”),并修改:
[opcache]
zend_extension = opcache.so
opcache.enable = 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
我使用的是 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 文件:
/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
但还是一无所获。我对 xdebug 遵循了完全相同的过程,并且工作正常。我错过了什么?
我想知道使用 PHP 的 Homebrew 版本是否会更容易。但我似乎没有所需的 .so
文件。各种教程说把这个放在 Apache 的 httpd.conf
:
LoadModule php7_module /usr/local/opt/php71/libexec/apache2/libphp7.so
但是libexec
目录不存在。有 lib
但此目录和任何其他目录都没有任何 .so
文件。
对我来说,它通过以下步骤起作用:
- 在"phpinfo()"页面搜索
extension_dir
,找到路径/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.default”),并修改:
[opcache] zend_extension = opcache.so opcache.enable = 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