我在使用 php-fpm (7.0.33) 时遇到了一个奇怪的问题。
有时它会开始抛出如下错误:
PHP message: PHP Fatal error: Uncaught Error: Call to undefined function untrailingslashit()
重新启动 php-fpm 即可解决此问题。没有特定请求导致此行为 - 它只是随机的。
Opcache 设置:
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.fast_shutdown => 0 => 0
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 => 32 => 32
opcache.lockfile_path => /tmp => /tmp
opcache.log_verbosity_level => 2 => 2
opcache.max_accelerated_files => 10000 => 10000
opcache.max_file_size => 0 => 0
opcache.max_wasted_percentage => 5 => 5
opcache.memory_consumption => 256 => 256
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 => 15 => 15
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
我最好的猜测是 opcache 内存在一段时间内以某种方式被损坏,但即使我已将其放入详细日志记录中 - 崩溃后日志仍为空。
目前我已经禁用了 opcache 并检查它是否能解决问题,但这不是理想的解决方案。任何帮助都将不胜感激。
答案1
我们看到了类似的东西。未定义函数错误,而该函数肯定存在。最终找到了一条 nginx 日志消息:fastcgi_buffer_size 4096 不足以容纳缓存键,应至少增加到 5120
增加 nginx 配置中的 fastcgi_buffer_size 解决了该问题