如何在Debian中启用OPcache?

刚刚安装了php5-fpm。 所有消息来源都说apc模块已经被OPcache所取代,并且默认编译但是没有启用。

我怎样才能启用这个模块。 我在我的服务器上找不到opcache.so文件

我检查了/usr/lib/php5/etc/php5但找不到它。

 php -v PHP 5.4.4-14+deb7u4 (cli) (built: Aug 23 2013 14:37:41) 

您可以像shaun m说的那样更新PHP,或者如果您不想这样做,您可以从PECL安装zendopcache

检查最新版本,这里安装版本7.0.3。

通过php-pear安装“pecl”

 `sudo apt-get install -y php-pear` 

安装构build依赖项

 sudo apt-get install -y build-essential php5-dev 

安装Zend OpCache

 sudo pecl install zendopcache-7.0.3 

findopcache.so的位置

 sudo find / -name 'opcache.so' 

我的是

 /usr/lib/php5/20100525/opcache.so 

现在创buildopcache.ini

 sudo vim /etc/php5/mods-available/opcache.ini 

添加这个信息

 zend_extension=/usr/lib/php5/20100525/opcache.so # File path from above opcache.memory_consumption=128 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 opcache.fast_shutdown=1 opcache.enable_cli=1 

现在为conf文件创build一个符号链接

 sudo ln -s /etc/php5/mods-available/opcache.ini /etc/php5/conf.d/20-opcache.ini 

重新启动服务

 sudo service php5-fpm restart sudo service apache2 restart 

确认安装

 php -v 

应该提到

 Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies 

然后(可选)通过清理完成

 sudo apt-get remove --purge build-essential php5-dev 

参考

OPCache仅在新的PHP 5.5中启用和编译,而不是Wheezy自带的5.4。 如果你想在Debian中使用OPCache和PHP 5.5,你必须添加dotdeb仓库(见下文)并从那里安装。

 deb http://packages.dotdeb.org wheezy-php55 all deb-src http://packages.dotdeb.org wheezy-php55 all 

您可以安装APC惠普pecl

 pecl install apc 

安装php-pear需要php-dev。

或者你可以安装惠普apt-get

 apt-get install php5-apc 

添加到杰里米·戴维斯的答案…

如果你的/ tmp目录被挂载为“noexec”(防止在那里编写的脚本的执行,这在公共服务器上是常见的),pecl install命令将会失败,如下所示:

 shtool at '/tmp/pear/temp/zendopcache/build/shtool' does not exist or is not executable. Make sure that the file exists and is executable and then rerun this script. 

为了避免这种情况,你可以将/ tmp分区重新挂载为exec,然后pecl install,将其重新挂载为noexec,如下所示:

 mount -o remount,exec /tmp pecl install zendopcache mount -o remount,noexec /tmp 

在与我们的系统pipe理员检查,这是没问题的,我在生产服务器上试了一下,它工作得很好(无论如何,你将不得不重新启动您的PHP profcess(无论是FPM或Apache模块),所以可能不是一个好在一个非常高负载的服务器上的想法,但对于轻度使用的公共服务器,整个过程似乎工作得很好。