OPCache включен, но php -i показывает, что он отключен - PullRequest
0 голосов
/ 15 октября 2018

Я установил NextCloud, и в окне сводки он постоянно сообщает мне, что мой OPCache не включен.Я включил его и вижу противоречивую информацию о том, действительно ли он включен или нет.

Ubuntu 18.04.1 |PHP 7.2.11-2

$ sudo cat /etc/php/7.2/apache2/php.ini | grep opcache
[opcache]
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
;opcache.max_wasted_percentage=5
;opcache.use_cwd=1
;opcache.validate_timestamps=1
opcache.revalidate_freq=1
;opcache.revalidate_path=0
opcache.save_comments=1
;opcache.enable_file_override=0
;opcache.optimization_level=0xffffffff
;opcache.inherited_hack=1
;opcache.dups_fix=0
;opcache.blacklist_filename=
;opcache.max_file_size=0
;opcache.consistency_checks=0
;opcache.force_restart_timeout=180
;opcache.error_log=
;opcache.log_verbosity_level=1
;opcache.preferred_memory_model=
;opcache.protect_memory=0
;opcache.restrict_api=
;opcache.mmap_base=
;opcache.file_cache=
;opcache.file_cache_only=0
;opcache.file_cache_consistency_checks=1
; Implies opcache.file_cache_only=1 for a certain process that failed to
;opcache.file_cache_fallback=1
;opcache.huge_code_pages=1
;opcache.validate_permission=0
;opcache.validate_root=0
;opcache.opt_debug_level=0

Вот мой вывод php -i:

$ php -i
Zend OPcache

Opcode Caching => Disabled
Optimization => Disabled
SHM Cache => Enabled
File Cache => Disabled
Startup Failed => Opcode Caching is disabled for CLI

Directive => Local Value => Master Value
opcache.blacklist_filename => no value => no value
opcache.consistency_checks => 0 => 0
opcache.dups_fix => Off => Off
opcache.enable => On => On
opcache.enable_cli => Off => Off
opcache.enable_file_override => Off => Off
opcache.error_log => no value => no value
opcache.file_cache => no value => no value
opcache.file_cache_consistency_checks => 1 => 1
opcache.file_cache_only => 0 => 0
opcache.file_update_protection => 2 => 2
opcache.force_restart_timeout => 180 => 180
opcache.huge_code_pages => Off => Off
opcache.inherited_hack => On => On
opcache.interned_strings_buffer => 8 => 8
opcache.lockfile_path => /tmp => /tmp
opcache.log_verbosity_level => 1 => 1
opcache.max_accelerated_files => 10000 => 10000
opcache.max_file_size => 0 => 0
opcache.max_wasted_percentage => 5 => 5
opcache.memory_consumption => 128 => 128
opcache.opt_debug_level => 0 => 0
opcache.optimization_level => 0x7FFFBFFF => 0x7FFFBFFF
opcache.preferred_memory_model => no value => no value
opcache.protect_memory => 0 => 0
opcache.restrict_api => no value => no value
opcache.revalidate_freq => 2 => 2
opcache.revalidate_path => Off => Off
opcache.save_comments => 1 => 1
opcache.use_cwd => On => On
opcache.validate_permission => Off => Off
opcache.validate_root => Off => Off
opcache.validate_timestamps => On => On

Затем, наконец, глядя на сгенерированную phpinfo () страницу, я вижу, что она загружаетФайл php.ini из правильного, который я редактировал из первого блока.Единственный дополнительный INI-файл, который он загружает, находится в папке, доступной для модов:

$ sudo cat /etc/php/7.2/mods-available/opcache.ini
; configuration for php opcache module
; priority=10
zend_extension=/usr/lib/php/20170718/opcache.so

В этом файле нет никаких настроек, поэтому единственный файл, в котором я вижу эти настройки, это phpФайл .ini, который загружается из phpinfo ().Эти настройки были установлены некоторое время, я только сейчас замечаю, что они не влияют.Таким образом, сервер apache был перезагружен с сохранением этих настроек.Что мне здесь не хватает?

Редактировать: Вот несколько скриншотов экрана phpinfo () для дальнейшего разъяснения: phpinfo() 1

phpinfo() 2

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Ну, поиграв несколько часов, думаю, я понял это.В соответствии с тем, что сказал @Sammitch.Когда я делал обновление apt-get, по какой-то причине он устанавливал 7.3 php-файлы.Поэтому я удалил их и проверил, что мой конфиг для php был установлен по умолчанию на 7.2, а затем сделал еще одно обновление и автоматическое удаление.Это, казалось, прояснило эту путаницу.Не уверен, как это произошло, хотя.

0 голосов
/ 15 октября 2018

У меня недостаточно репутации, чтобы добавить это в качестве комментария, поэтому я добавляю его в качестве ответа.Можете ли вы запустить php -a, а затем выполнить следующую команду, чтобы увидеть, что она говорит:

print_r(opcache_get_configuration());

Обычно это должно отображать что-то вроде этого:


Array
(
    [directives] => Array
        (
            [opcache.enable] => 1
            [opcache.enable_cli] => 
            [opcache.use_cwd] => 1
            [opcache.validate_timestamps] => 1
            [opcache.validate_permission] => 
            [opcache.validate_root] => 
            [opcache.inherited_hack] => 1
            [opcache.dups_fix] => 
            [opcache.revalidate_path] => 
            [opcache.log_verbosity_level] => 1
            [opcache.memory_consumption] => 134217728
            [opcache.interned_strings_buffer] => 8
            [opcache.max_accelerated_files] => 10000
            [opcache.max_wasted_percentage] => 0.05
            [opcache.consistency_checks] => 0
            [opcache.force_restart_timeout] => 180
            [opcache.revalidate_freq] => 2
            [opcache.preferred_memory_model] => 
            [opcache.blacklist_filename] => 
            [opcache.max_file_size] => 0
            [opcache.error_log] => 
            [opcache.protect_memory] => 
            [opcache.save_comments] => 1
            [opcache.enable_file_override] => 
            [opcache.optimization_level] => 2147467263
            [opcache.lockfile_path] => /tmp
            [opcache.file_cache] => 
            [opcache.file_cache_only] => 
            [opcache.file_cache_consistency_checks] => 1
        )
    [version] => Array
        (
            [version] => 7.2.10-0ubuntu0.18.04.1
            [opcache_product_name] => Zend OPcache
        )
    [blacklist] => Array
        (
        )
)

, если вы найдете opcache.enable - true (как в этом примере), затем он включен.Тем не менее, он не включен для Cli.

...