Я скомпилировал php 5.5.27 на Ubuntu 14.04 как часть Nginx 1.8.0 с использованием PHP-FPM и не могу понять, почему он не работает.
У меня есть следующие файлы php.ini в системе. Я не использую Apache, так что третий вышел... так что выходит 1-й два:
/srv/etc/web_x/php/php.ini
/etc/php5/cli/php.ini
/etc/php5/apache2/php.ini
Когда я запускаю nginx, я вижу на своей странице phpinfo.php(secure), что я указываю на свой скомпилированный php.ini, то есть:
Loaded Configuration File /srv/etc/web_x/php/php.ini
Однако информация об Zenc OPcache отсутствует, поэтому она не работает.
Единственное упоминание о opcache заключается в настройках параметров --enable-opcache. Полные параметры настройки в соответствии с phpinfo (я использую скрипт с переменными, намного проще представить его таким образом, как с переменными):
'./configure' '--prefix=/srv/apps/web_x/php' '--with-config-file-path=/srv/etc/web_x/php' '--with-config-file-scan-dir=/srv/etc/web_x/php/conf.d' '--with-curl' '--with-pear' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-zlib' '--with-freetype-dir' '--with-t1lib' '--with-mcrypt' '--with-mhash' '--with-mysql' '--with-mysqli' '--with-pgsql' '--with-pdo-mysql' '--with-pdo-pgsql' '--with-openssl' '--with-xmlrpc' '--with-xpm-dir' '--with-xsl' '--with-bz2' '--with-gettext' '--with-readline' '--with-fpm-user=wwx' '--with-fpm-group=wwx' '--with-imap' '--with-imap-ssl' '--with-kerberos' '--with-snmp' '--disable-debug' '--enable-opcache' '--enable-fpm' '--enable-cli' '--enable-gd-native-ttf' '--enable-inline-optimization' '--enable-json' '--enable-exif' '--enable-wddx' '--enable-zip' '--enable-bcmath' '--enable-calendar' '--enable-ftp' '--enable-mbstring' '--enable-soap' '--enable-sockets' '--enable-shmop' '--enable-dba' '--enable-shared' '--enable-sysvsem' '--enable-sysvshm' '--enable-sysvmsg'
Странная вещь, если я посмотрю на настройки, которые я вижу, что показывает, что я включил Zend OPcache для моей компиляции, но не включен для установленной Ubuntu PHP CLI install:
/srv/etc/web_x/php/php.ini:[opcache]
/srv/etc/web_x/php/php.ini:opcache.enable=1
/srv/etc/web_x/php/php.ini:opcache.enable_cli=1
...
/etc/php5/cli/php.ini:[opcache]
/etc/php5/cli/php.ini:;opcache.enable=0
/etc/php5/cli/php.ini:;opcache.enable_cli=0
...
Тем не менее, если я проверю Ubuntu PHP CLI, я вижу:
php --version
PHP 5.5.9-1ubuntu4.11 (cli) (built: Jul 2 2015 15:23:08)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies
Только что найденное решение... добавьте следующее в конец файла php.ini:
zend_extension=opcache.so
Это обсуждается в руководстве по установке PHP на php.net, но я помню, что прочитал, что это больше не требовалось, хотя это явно (возможно, я напомнил неправильно b/c один раз, когда требуется путь к общей библиотеке, и это ясно нет).
Я бы ожидал, что компиляция PHP 5.5 с помощью --enable-opcache могла бы справиться с этим, но это не так. Возможно, для будущей версии PHP ;-)