dunglas / frankenphp

🧟 The modern PHP app server
https://frankenphp.dev
MIT License
6.98k stars 244 forks source link

Segmentation fault (core dumped) #1140

Open jpvdw86 opened 2 weeks ago

jpvdw86 commented 2 weeks ago

What happened?

We are running FrankenPHP (non-static variant) in Docker on our Kubernetes platform. This is in worker mode with a Symfony application. The application seems to work well; however, as traffic increases, we regularly encounter segmentation fault errors.

We have already rolled back from the PHP 8.3 variant with Gmagick because we were getting errors during some crons with the message, "Disconnected 'Magick: abort due to signal 11 (SIGSEGV) Segmentation Fault' ... Aborted (core dumped)."

We have therefore reverted to PHP 8.2 with Imagick. The "Magick abort" error is gone, but we still sporadically experience segmentation faults.

In the documentation, I read about the OpenSSL bug, but this only applies to the static build, correct? Additionally, we are following the recommendation to use the provided Docker image.

Base dockerfile

FROM dunglas/frankenphp:php8.3-bookworm

ARG TARGETPLATFORM
ARG TARGETARCH
ENV COMPOSER_ALLOW_SUPERUSER=1
ENV PHP_INI_SCAN_DIR=":$PHP_INI_DIR/app.conf.d"

WORKDIR /var/www/html

RUN apt-get update && apt-get install -y -f \
    build-essential \
    libgraphicsmagick1-dev \
    python3 \
    python3-pip \
    curl \
    nodejs \
    wget \
    git \
    npm \
    librabbitmq-dev \
    autoconf \
    ca-certificates \
    fontconfig \
    libc6 \
    libfreetype6 \
    libjpeg62-turbo \
    libpng16-16 \
    libssl3 \
    libstdc++6 \
    libx11-6 \
    libxcb1 \
    libxext6 \
    libxrender1 \
    xfonts-75dpi \
    xfonts-base \
    cron \
    zlib1g && \
    npm install -g node-gyp

RUN apt-get install -y -f procps

RUN curl -o- -L https://yarnpkg.com/install.sh | bash && \
    export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"

RUN wget https://github.com/wkhtmltopdf/packaging/releases/download/0.12.6.1-3/wkhtmltox_0.12.6.1-3.bookworm_${TARGETARCH}.deb && \
    dpkg -i wkhtmltox_0.12.6.1-3.bookworm_${TARGETARCH}.deb || apt-get install -f -y;

RUN set -eux; \
    install-php-extensions \
    opcache \
    gmagick \
    @composer \
    amqp \
    bcmath \
    exif \
    gd \
    apcu \
    pdo_mysql \
    ftp \
    soap \
    intl \
    csv \
    zip \
    redis \
    ssh2 \
    yaml;

COPY Caddyfile /etc/caddy/Caddyfile
COPY conf.d/10-app.ini $PHP_INI_DIR/app.conf.d/

RUN apt-get autoremove -y \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

CMD [ "frankenphp", "run", "--config", "/etc/caddy/Caddyfile" ]

Build Type

Docker (Debian Bookworm)

Worker Mode

Yes

Operating System

GNU/Linux

CPU Architecture

x86_64

PHP configuration

[PHP Modules]
amqp
apcu
bcmath
Core
csv
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gd
hash
iconv
imagick
intl
json
libxml
mbstring
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
random
readline
redis
Reflection
session
SimpleXML
soap
sodium
SPL
sqlite3
ssh2
standard
tokenizer
xml
xmlreader
xmlwriter
yaml
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

-------
Configuration

amqp

Version => 2.1.2
Compiled => Nov  5 2024 @ 14:56:02
AMQP protocol version => 0-9-1
librabbitmq version => 0.11.0
Default max channels per connection => 256
Default max frame size => 131072
Default heartbeats interval => 0

Directive => Local Value => Master Value
amqp.auto_ack => 0 => 0
amqp.cacert => no value => no value
amqp.cert => no value => no value
amqp.channel_max => 256 => 256
amqp.connect_timeout => 0 => 0
amqp.deserialization_depth => 128 => 128
amqp.frame_max => 131072 => 131072
amqp.global_prefetch_count => 0 => 0
amqp.global_prefetch_size => 0 => 0
amqp.heartbeat => 0 => 0
amqp.host => localhost => localhost
amqp.key => no value => no value
amqp.login => guest => guest
amqp.password => guest => guest
amqp.port => 5672 => 5672
amqp.prefetch_count => 3 => 3
amqp.prefetch_size => 0 => 0
amqp.read_timeout => 0 => 0
amqp.rpc_timeout => 0 => 0
amqp.sasl_method => AMQP_SASL_METHOD_PLAIN => AMQP_SASL_METHOD_PLAIN
amqp.serialization_depth => 128 => 128
amqp.timeout => no value => no value
amqp.verify => 1 => 1
amqp.vhost => / => /
amqp.write_timeout => 0 => 0

apcu

APCu Support => Enabled
Version => 5.1.24
APCu Debugging => Disabled
MMAP Support => Enabled
MMAP File Mask =>  
Serialization Support => php
Build Date => Nov  5 2024 14:55:07

Directive => Local Value => Master Value
apc.coredump_unmap => Off => Off
apc.enable_cli => On => On
apc.enabled => On => On
apc.entries_hint => 4096 => 4096
apc.gc_ttl => 3600 => 3600
apc.mmap_file_mask => no value => no value
apc.preload_path => no value => no value
apc.serializer => php => php
apc.shm_segments => 1 => 1
apc.shm_size => 32M => 32M
apc.slam_defense => Off => Off
apc.smart => 0 => 0
apc.ttl => 0 => 0
apc.use_request_time => Off => Off

bcmath

BCMath support => enabled

Directive => Local Value => Master Value
bcmath.scale => 0 => 0

Core

PHP Version => 8.2.25

Directive => Local Value => Master Value
allow_url_fopen => On => On
allow_url_include => Off => Off
arg_separator.input => & => &
arg_separator.output => & => &
auto_append_file => no value => no value
auto_globals_jit => On => On
auto_prepend_file => no value => no value
browscap => no value => no value
default_charset => UTF-8 => UTF-8
default_mimetype => text/html => text/html
disable_classes => no value => no value
disable_functions => no value => no value
display_errors => STDOUT => STDOUT
display_startup_errors => On => On
doc_root => no value => no value
docref_ext => no value => no value
docref_root => no value => no value
enable_dl => On => On
enable_post_data_reading => On => On
error_append_string => no value => no value
error_log => no value => no value
error_log_mode => 0644 => 0644
error_prepend_string => no value => no value
error_reporting => no value => no value
expose_php => Off => Off
extension_dir => /usr/local/lib/php/extensions/no-debug-zts-20220829 => /usr/local/lib/php/extensions/no-debug-zts-20220829
fiber.stack_size => no value => no value
file_uploads => On => On
hard_timeout => 2 => 2
highlight.comment => <font style="color: #FF8000">#FF8000</font> => <font style="color: #FF8000">#FF8000</font>
highlight.default => <font style="color: #0000BB">#0000BB</font> => <font style="color: #0000BB">#0000BB</font>
highlight.html => <font style="color: #000000">#000000</font> => <font style="color: #000000">#000000</font>
highlight.keyword => <font style="color: #007700">#007700</font> => <font style="color: #007700">#007700</font>
highlight.string => <font style="color: #DD0000">#DD0000</font> => <font style="color: #DD0000">#DD0000</font>
html_errors => Off => Off
ignore_repeated_errors => Off => Off
ignore_repeated_source => Off => Off
ignore_user_abort => Off => Off
implicit_flush => On => On
include_path => .:/usr/local/lib/php => .:/usr/local/lib/php
input_encoding => no value => no value
internal_encoding => no value => no value
log_errors => Off => Off
mail.add_x_header => Off => Off
mail.force_extra_parameters => no value => no value
mail.log => no value => no value
mail.mixed_lf_and_crlf => Off => Off
max_execution_time => 0 => 0
max_file_uploads => 20 => 20
max_input_nesting_level => 64 => 64
max_input_time => -1 => -1
max_input_vars => 50000 => 50000
max_multipart_body_parts => -1 => -1
memory_limit => 512M => 512M
open_basedir => no value => no value
output_buffering => 0 => 0
output_encoding => no value => no value
output_handler => no value => no value
post_max_size => 150M => 150M
precision => 14 => 14
realpath_cache_size => 4096K => 4096K
realpath_cache_ttl => 600 => 600
register_argc_argv => On => On
report_memleaks => On => On
report_zend_debug => Off => Off
request_order => no value => no value
sendmail_from => no value => no value
sendmail_path => /usr/sbin/sendmail -t -i => /usr/sbin/sendmail -t -i
serialize_precision => -1 => -1
short_open_tag => On => On
SMTP => localhost => localhost
smtp_port => 25 => 25
sys_temp_dir => no value => no value
syslog.facility => LOG_USER => LOG_USER
syslog.filter => no-ctrl => no-ctrl
syslog.ident => php => php
unserialize_callback_func => no value => no value
upload_max_filesize => 150M => 150M
upload_tmp_dir => no value => no value
user_dir => no value => no value
user_ini.cache_ttl => 300 => 300
user_ini.filename => .user.ini => .user.ini
variables_order => EGPCS => EGPCS
xmlrpc_error_number => 0 => 0
xmlrpc_errors => Off => Off
zend.assertions => 1 => 1
zend.detect_unicode => Off => Off
zend.enable_gc => On => On
zend.exception_ignore_args => Off => Off
zend.exception_string_param_max_len => 15 => 15
zend.multibyte => Off => Off
zend.script_encoding => no value => no value

csv

CSV support => enabled
Version => 0.3.0
Author => George Peter Banyard
Bug reports => https://gitlab.com/Girgias/csv-php-extension/issues

ctype

ctype functions => enabled

curl

cURL support => enabled
cURL Information => 7.88.1
Age => 10
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => Yes
GSSAPI => Yes
KERBEROS5 => Yes
UNIX_SOCKETS => Yes
PSL => Yes
HTTPS_PROXY => Yes
MULTI_SSL => No
BROTLI => Yes
ALTSVC => Yes
HTTP3 => No
UNICODE => No
ZSTD => Yes
HSTS => Yes
GSASL => No
Protocols => dict, file, ftp, ftps, gopher, gophers, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtmp, rtmpe, rtmps, rtmpt, rtmpte, rtmpts, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
Host => x86_64-pc-linux-gnu
SSL Version => OpenSSL/3.0.14
ZLib Version => 1.2.13
libSSH Version => libssh2/1.10.0

Directive => Local Value => Master Value
curl.cainfo => no value => no value

date

date/time support => enabled
timelib version => 2022.12
"Olson" Timezone Database Version => 2024.2
Timezone Database => internal
Default timezone => Europe/Amsterdam

Directive => Local Value => Master Value
date.default_latitude => 31.7667 => 31.7667
date.default_longitude => 35.2333 => 35.2333
date.sunrise_zenith => 90.833333 => 90.833333
date.sunset_zenith => 90.833333 => 90.833333
date.timezone => Europe/Amsterdam => Europe/Amsterdam

dom

DOM/XML => enabled
DOM/XML API Version => 20031129
libxml Version => 2.9.14
HTML Support => enabled
XPath Support => enabled
XPointer Support => enabled
Schema Support => enabled
RelaxNG Support => enabled

exif

EXIF Support => enabled
Supported EXIF Version => 0220
Supported filetypes => JPEG, TIFF
Multibyte decoding support using mbstring => enabled
Extended EXIF tag formats => Canon, Casio, Fujifilm, Nikon, Olympus, Samsung, Panasonic, DJI, Sony, Pentax, Minolta, Sigma, Foveon, Kyocera, Ricoh, AGFA, Epson

Directive => Local Value => Master Value
exif.decode_jis_intel => JIS => JIS
exif.decode_jis_motorola => JIS => JIS
exif.decode_unicode_intel => UCS-2LE => UCS-2LE
exif.decode_unicode_motorola => UCS-2BE => UCS-2BE
exif.encode_jis => no value => no value
exif.encode_unicode => ISO-8859-15 => ISO-8859-15

fileinfo

fileinfo support => enabled
libmagic => 540

filter

Input Validation and Filtering => enabled

Directive => Local Value => Master Value
filter.default => unsafe_raw => unsafe_raw
filter.default_flags => no value => no value

ftp

FTP support => enabled
FTPS support => enabled

gd

GD Support => enabled
GD Version => bundled (2.1.0 compatible)
FreeType Support => enabled
FreeType Linkage => with freetype
FreeType Version => 2.12.1
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
libJPEG Version => 6b
PNG Support => enabled
libPNG Version => 1.6.39
WBMP Support => enabled
XPM Support => enabled
libXpm Version => 30411
XBM Support => enabled
WebP Support => enabled
BMP Support => enabled
AVIF Support => enabled
TGA Read Support => enabled

Directive => Local Value => Master Value
gd.jpeg_ignore_warning => On => On

hash

hash support => enabled
Hashing Engines => md2 md4 md5 sha1 sha224 sha256 sha384 sha512/224 sha512/256 sha512 sha3-224 sha3-256 sha3-384 sha3-512 ripemd128 ripemd160 ripemd256 ripemd320 whirlpool tiger128,3 tiger160,3 tiger192,3 tiger128,4 tiger160,4 tiger192,4 snefru snefru256 gost gost-crypto adler32 crc32 crc32b crc32c fnv132 fnv1a32 fnv164 fnv1a64 joaat murmur3a murmur3c murmur3f xxh32 xxh64 xxh3 xxh128 haval128,3 haval160,3 haval192,3 haval224,3 haval256,3 haval128,4 haval160,4 haval192,4 haval224,4 haval256,4 haval128,5 haval160,5 haval192,5 haval224,5 haval256,5 

MHASH support => Enabled
MHASH API Version => Emulated Support

iconv

iconv support => enabled
iconv implementation => glibc
iconv library version => 2.36

Directive => Local Value => Master Value
iconv.input_encoding => no value => no value
iconv.internal_encoding => no value => no value
iconv.output_encoding => no value => no value

imagick

imagick module => enabled
imagick module version => 3.7.0
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
Imagick using ImageMagick library version => ImageMagick 6.9.11-60 Q16 x86_64 2021-01-25 https://imagemagick.org
ImageMagick copyright => (C) 1999-2021 ImageMagick Studio LLC
ImageMagick release date => 2021-01-25
ImageMagick number of supported formats:  => 247
ImageMagick supported formats => 3FR, 3G2, 3GP, AAI, AI, APNG, ART, ARW, AVI, AVIF, AVS, BGR, BGRA, BGRO, BIE, BMP, BMP2, BMP3, BRF, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUR, CUT, DATA, DCM, DCR, DCX, DDS, DFONT, DJVU, DNG, DOT, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, EXR, FAX, FILE, FITS, FRACTAL, FTP, FTS, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, GV, H, HALD, HDR, HEIC, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, J2C, J2K, JBG, JBIG, JNG, JNX, JP2, JPC, JPE, JPEG, JPG, JPM, JPS, JPT, JSON, K25, KDC, LABEL, M2V, M4V, MAC, MAGICK, MAP, MASK, MAT, MATTE, MEF, MIFF, MKV, MNG, MONO, MOV, MP4, MPC, MPG, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PREVIEW, PS, PS2, PS3, PSB, PSD, PTIF, PWP, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, SCR, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, STEGANO, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIDEO, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMF, WMV, WMZ, WPG, X, X3F, XBM, XC, XCF, XPM, XPS, XV, XWD, YCbCr, YCbCrA, YUV

Directive => Local Value => Master Value
imagick.allow_zero_dimension_images => 0 => 0
imagick.locale_fix => 0 => 0
imagick.progress_monitor => 0 => 0
imagick.set_single_thread => 1 => 1
imagick.shutdown_sleep_count => 10 => 10
imagick.skip_version_check => 0 => 0

intl

Internationalization support => enabled
ICU version => 72.1
ICU Data version => 72.1
ICU TZData version => 2022e
ICU Unicode version => 15.0

Directive => Local Value => Master Value
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => Off => Off

json

json support => enabled

libxml

libXML support => active
libXML Compiled Version => 2.9.14
libXML Loaded Version => 20914
libXML streams => enabled

mbstring

Multibyte Support => enabled
Multibyte string engine => libmbfl
HTTP input encoding translation => disabled
libmbfl version => 1.3.2

mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.

Multibyte (japanese) regex support => enabled
Multibyte regex (oniguruma) version => 6.9.8

Directive => Local Value => Master Value
mbstring.detect_order => no value => no value
mbstring.encoding_translation => Off => Off
mbstring.http_input => no value => no value
mbstring.http_output => no value => no value
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
mbstring.internal_encoding => no value => no value
mbstring.language => neutral => neutral
mbstring.regex_retry_limit => 1000000 => 1000000
mbstring.regex_stack_limit => 100000 => 100000
mbstring.strict_detection => Off => Off
mbstring.substitute_character => no value => no value

mysqlnd

mysqlnd => enabled
Version => mysqlnd 8.2.25
Compression => supported
core SSL => supported
extended SSL => supported
Command buffer size => 4096
Read buffer size => 32768
Read timeout => 86400
Collecting statistics => Yes
Collecting memory statistics => No
Tracing => n/a
Loaded plugins => mysqlnd,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password,auth_plugin_caching_sha2_password,auth_plugin_sha256_password
API Extensions => pdo_mysql

openssl

OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 3.0.14 4 Jun 2024
OpenSSL Header Version => OpenSSL 3.0.14 4 Jun 2024
Openssl default config => /usr/lib/ssl/openssl.cnf

Directive => Local Value => Master Value
openssl.cafile => no value => no value
openssl.capath => no value => no value

pcre

PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 10.40 2022-04-14
PCRE Unicode Version => 14.0.0
PCRE JIT Support => enabled
PCRE JIT Target => x86 64bit (little endian + unaligned)

Directive => Local Value => Master Value
pcre.backtrack_limit => 1000000 => 1000000
pcre.jit => On => On
pcre.recursion_limit => 100000 => 100000

PDO

PDO support => enabled
PDO drivers => sqlite, mysql

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 8.2.25

Directive => Local Value => Master Value
pdo_mysql.default_socket => no value => no value

pdo_sqlite

PDO Driver for SQLite 3.x => enabled
SQLite Library => 3.40.1

Phar

Phar: PHP Archive support => enabled
Phar API version => 1.1.1
Phar-based phar archives => enabled
Tar-based phar archives => enabled
ZIP-based phar archives => enabled
gzip compression => enabled
bzip2 compression => disabled (install ext/bz2)
Native OpenSSL support => enabled

Phar based on pear/PHP_Archive, original concept by Davey Shafik.
Phar fully realized by Gregory Beaver and Marcus Boerger.
Portions of tar implementation Copyright (c) 2003-2009 Tim Kientzle.
Directive => Local Value => Master Value
phar.cache_list => no value => no value
phar.readonly => On => On
phar.require_hash => On => On

posix

POSIX support => enabled

random

Version => 8.2.25

readline

Readline Support => enabled
Readline library => 8.2

Directive => Local Value => Master Value
cli.pager => no value => no value
cli.prompt => \b \>  => \b \> 

redis

Redis Support => enabled
Redis Version => 6.1.0
Redis Sentinel Version => 1.0
Available serializers => php, json
Available compression => lzf, zstd, lz4

Directive => Local Value => Master Value
redis.arrays.algorithm => no value => no value
redis.arrays.auth => no value => no value
redis.arrays.autorehash => 0 => 0
redis.arrays.connecttimeout => 0 => 0
redis.arrays.consistent => 0 => 0
redis.arrays.distributor => no value => no value
redis.arrays.functions => no value => no value
redis.arrays.hosts => no value => no value
redis.arrays.index => 0 => 0
redis.arrays.lazyconnect => 0 => 0
redis.arrays.names => no value => no value
redis.arrays.pconnect => 0 => 0
redis.arrays.previous => no value => no value
redis.arrays.readtimeout => 0 => 0
redis.arrays.retryinterval => 0 => 0
redis.clusters.auth => no value => no value
redis.clusters.cache_slots => 0 => 0
redis.clusters.persistent => 0 => 0
redis.clusters.read_timeout => 0 => 0
redis.clusters.seeds => no value => no value
redis.clusters.timeout => 0 => 0
redis.pconnect.connection_limit => 0 => 0
redis.pconnect.echo_check_liveness => 1 => 1
redis.pconnect.pool_detect_dirty => 0 => 0
redis.pconnect.pool_pattern => no value => no value
redis.pconnect.pool_poll_timeout => 0 => 0
redis.pconnect.pooling_enabled => 1 => 1
redis.session.compression => none => none
redis.session.compression_level => 3 => 3
redis.session.early_refresh => 0 => 0
redis.session.lock_expire => 0 => 0
redis.session.lock_retries => 100 => 100
redis.session.lock_wait_time => 20000 => 20000
redis.session.locking_enabled => 0 => 0

Reflection

Reflection => enabled

session

Session Support => enabled
Registered save handlers => files user redis rediscluster 
Registered serializer handlers => php_serialize php php_binary 

Directive => Local Value => Master Value
session.auto_start => Off => Off
session.cache_expire => 180 => 180
session.cache_limiter => nocache => nocache
session.cookie_domain => no value => no value
session.cookie_httponly => Off => Off
session.cookie_lifetime => 0 => 0
session.cookie_path => / => /
session.cookie_samesite => no value => no value
session.cookie_secure => Off => Off
session.gc_divisor => 100 => 100
session.gc_maxlifetime => 1440 => 1440
session.gc_probability => 1 => 1
session.lazy_write => On => On
session.name => PHPSESSID => PHPSESSID
session.referer_check => no value => no value
session.save_handler => files => files
session.save_path => no value => no value
session.serialize_handler => php => php
session.sid_bits_per_character => 4 => 4
session.sid_length => 32 => 32
session.upload_progress.cleanup => On => On
session.upload_progress.enabled => On => On
session.upload_progress.freq => 1% => 1%
session.upload_progress.min_freq => 1 => 1
session.upload_progress.name => PHP_SESSION_UPLOAD_PROGRESS => PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix => upload_progress_ => upload_progress_
session.use_cookies => On => On
session.use_only_cookies => On => On
session.use_strict_mode => On => On
session.use_trans_sid => Off => Off

SimpleXML

SimpleXML support => enabled
Schema support => enabled

soap

Soap Client => enabled
Soap Server => enabled

Directive => Local Value => Master Value
soap.wsdl_cache => 1 => 1
soap.wsdl_cache_dir => /tmp => /tmp
soap.wsdl_cache_enabled => On => On
soap.wsdl_cache_limit => 5 => 5
soap.wsdl_cache_ttl => 86400 => 86400

sodium

sodium support => enabled
libsodium headers version => 1.0.18
libsodium library version => 1.0.18

SPL

SPL support => enabled
Interfaces => OuterIterator, RecursiveIterator, SeekableIterator, SplObserver, SplSubject
Classes => AppendIterator, ArrayIterator, ArrayObject, BadFunctionCallException, BadMethodCallException, CachingIterator, CallbackFilterIterator, DirectoryIterator, DomainException, EmptyIterator, FilesystemIterator, FilterIterator, GlobIterator, InfiniteIterator, InvalidArgumentException, IteratorIterator, LengthException, LimitIterator, LogicException, MultipleIterator, NoRewindIterator, OutOfBoundsException, OutOfRangeException, OverflowException, ParentIterator, RangeException, RecursiveArrayIterator, RecursiveCachingIterator, RecursiveCallbackFilterIterator, RecursiveDirectoryIterator, RecursiveFilterIterator, RecursiveIteratorIterator, RecursiveRegexIterator, RecursiveTreeIterator, RegexIterator, RuntimeException, SplDoublyLinkedList, SplFileInfo, SplFileObject, SplFixedArray, SplHeap, SplMinHeap, SplMaxHeap, SplObjectStorage, SplPriorityQueue, SplQueue, SplStack, SplTempFileObject, UnderflowException, UnexpectedValueException

sqlite3

SQLite3 support => enabled
SQLite Library => 3.40.1

Directive => Local Value => Master Value
sqlite3.defensive => On => On
sqlite3.extension_dir => no value => no value

ssh2

SSH2 support => enabled
extension version => 1.4.1
libssh2 version => 1.10.0
banner => SSH-2.0-libssh2_1.10.0

standard

Dynamic Library Support => enabled
Path to sendmail => /usr/sbin/sendmail -t -i

Directive => Local Value => Master Value
assert.active => On => On
assert.bail => Off => Off
assert.callback => no value => no value
assert.exception => On => On
assert.warning => On => On
auto_detect_line_endings => Off => Off
default_socket_timeout => 60 => 60
from => no value => no value
session.trans_sid_hosts => no value => no value
session.trans_sid_tags => a=href,area=href,frame=src,form= => a=href,area=href,frame=src,form=
unserialize_max_depth => 4096 => 4096
url_rewriter.hosts => no value => no value
url_rewriter.tags => form= => form=
user_agent => no value => no value

tokenizer

Tokenizer Support => enabled

xml

XML Support => active
XML Namespace Support => active
libxml2 Version => 2.9.14

xmlreader

XMLReader => enabled

xmlwriter

XMLWriter => enabled

yaml

LibYAML Support => enabled
Module Version => 2.2.4
LibYAML Version => 0.2.5

Directive => Local Value => Master Value
yaml.decode_binary => 0 => 0
yaml.decode_php => 0 => 0
yaml.decode_timestamp => 0 => 0
yaml.output_canonical => 0 => 0
yaml.output_indent => 2 => 2
yaml.output_width => 80 => 80

Zend OPcache

Opcode Caching => Disabled
Optimization => Disabled
SHM Cache => Enabled
File Cache => Disabled
JIT => On
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 => On => On
opcache.error_log => no value => no value
opcache.file_cache => no value => no value
opcache.file_cache_consistency_checks => On => On
opcache.file_cache_only => Off => Off
opcache.file_update_protection => 2 => 2
opcache.force_restart_timeout => 180 => 180
opcache.huge_code_pages => Off => Off
opcache.interned_strings_buffer => 16 => 16
opcache.jit => 1255 => 1255
opcache.jit_bisect_limit => 0 => 0
opcache.jit_blacklist_root_trace => 16 => 16
opcache.jit_blacklist_side_trace => 8 => 8
opcache.jit_buffer_size => 100M => 100M
opcache.jit_debug => 0 => 0
opcache.jit_hot_func => 127 => 127
opcache.jit_hot_loop => 64 => 64
opcache.jit_hot_return => 8 => 8
opcache.jit_hot_side_exit => 8 => 8
opcache.jit_max_exit_counters => 8192 => 8192
opcache.jit_max_loop_unrolls => 8 => 8
opcache.jit_max_polymorphic_calls => 2 => 2
opcache.jit_max_recursive_calls => 2 => 2
opcache.jit_max_recursive_returns => 2 => 2
opcache.jit_max_root_traces => 1024 => 1024
opcache.jit_max_side_traces => 128 => 128
opcache.jit_prof_threshold => 0.005 => 0.005
opcache.lockfile_path => /tmp => /tmp
opcache.log_verbosity_level => 1 => 1
opcache.max_accelerated_files => 20000 => 20000
opcache.max_file_size => 0 => 0
opcache.max_wasted_percentage => 5 => 5
opcache.memory_consumption => 256 => 256
opcache.opt_debug_level => 0 => 0
opcache.optimization_level => 0x7FFEBFFF => 0x7FFEBFFF
opcache.preferred_memory_model => no value => no value
opcache.preload => /var/www/html/config/preload.php => /var/www/html/config/preload.php
opcache.preload_user => root => root
opcache.protect_memory => Off => Off
opcache.record_warnings => Off => Off
opcache.restrict_api => no value => no value
opcache.revalidate_freq => 2 => 2
opcache.revalidate_path => Off => Off
opcache.save_comments => On => On
opcache.use_cwd => On => On
opcache.validate_permission => Off => Off
opcache.validate_root => Off => Off
opcache.validate_timestamps => Off => Off

zip

Zip => enabled
Zip version => 1.21.1
Libzip version => 1.7.3
BZIP2 compression => Yes
XZ compression => No
ZSTD compression => No
AES-128 encryption => Yes
AES-192 encryption => Yes
AES-256 encryption => Yes

zlib

ZLib Support => enabled
Stream Wrapper => compress.zlib://
Stream Filter => zlib.inflate, zlib.deflate
Compiled Version => 1.2.13
Linked Version => 1.2.13

Directive => Local Value => Master Value
zlib.output_compression => Off => Off
zlib.output_compression_level => -1 => -1
zlib.output_handler => no value => no value

Additional Modules

Module Name

Environment

Variable => Value
KUBERNETES_SERVICE_PORT_HTTPS => 443
APP_PORT_85_TCP_ADDR => 10.0.69.59
KUBERNETES_SERVICE_PORT => 443
HOSTNAME => app-6d65b4dccc-djccg
PHP_VERSION => 8.2.25
APP_SERVICE_PORT => 80
STORYBOOK_SERVICE_PORT_HTTP => 80
PHP_INI_DIR => /usr/local/etc/php
GPG_KEYS => 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
XDG_DATA_HOME => /data
STORYBOOK_PORT_80_TCP => tcp://10.0.103.136:80
IMAGE_CLASSIFICATION_API_PORT_80_TCP => tcp://10.0.205.239:80
GODEBUG => cgocheck=0
XDG_CONFIG_HOME => /config
APP_PORT_85_TCP_PROTO => tcp
PHP_LDFLAGS => -Wl,-O1 -pie
STORYBOOK_SERVICE_PORT => 80
IMAGE_CLASSIFICATION_API_PORT_80_TCP_ADDR => 10.0.205.239
MERCURE_PORT_80_TCP_ADDR => 10.0.175.171
PWD => /var/www/html
APP_PORT_80_TCP_ADDR => 10.0.69.59
IMAGE_CLASSIFICATION_API_PORT => tcp://10.0.205.239:80
APP_SERVICE_PORT_HTTP => 80
MERCURE_PORT_80_TCP_PORT => 80
TZ => Europe/Amsterdam
APP_PORT_85_TCP_PORT => 85
HOME => /root
KUBERNETES_PORT_443_TCP => tcp://10.0.0.1:443
MERCURE_SERVICE_HOST => 10.0.175.171
MERCURE_PORT_80_TCP_PROTO => tcp
STORYBOOK_PORT => tcp://10.0.103.136:80
SCRAPER_API_PORT_80_TCP_PROTO => tcp
APP_SERVICE_PORT_METRICS => 85
MERCURE_SERVICE_PORT_HTTP => 80
STORYBOOK_SERVICE_HOST => 10.0.103.136
SCRAPER_API_SERVICE_PORT_HTTP => 80
IMAGE_CLASSIFICATION_API_PORT_80_TCP_PROTO => tcp
PHP_SHA256 => 330b54876ea1d05ade12ee9726167332058bccd58dffa1d4e12117f6b4f616b9
STORYBOOK_PORT_80_TCP_ADDR => 10.0.103.136
SCRAPER_API_PORT_80_TCP_PORT => 80
PHPIZE_DEPS => autoconf                 dpkg-dev                file            g++             gcc             libc-dev                make            pkg-config              re2c
IMAGE_CLASSIFICATION_API_SERVICE_HOST => 10.0.205.239
IMAGE_CLASSIFICATION_API_SERVICE_PORT_HTTP => 80
TERM => xterm
SCRAPER_API_PORT_80_TCP => tcp://10.0.108.79:80
PHP_URL => https://www.php.net/distributions/php-8.2.25.tar.xz
APP_PORT_85_TCP => tcp://10.0.69.59:85
SCRAPER_API_SERVICE_HOST => 10.0.108.79
SCRAPER_API_PORT_80_TCP_ADDR => 10.0.108.79
STORYBOOK_PORT_80_TCP_PROTO => tcp
SHLVL => 1
COMPOSER_ALLOW_SUPERUSER => 1
KUBERNETES_PORT_443_TCP_PROTO => tcp
PHP_CFLAGS => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
MERCURE_PORT_80_TCP => tcp://10.0.175.171:80
MERCURE_PORT => tcp://10.0.175.171:80
KUBERNETES_PORT_443_TCP_ADDR => 10.0.0.1
APP_PORT_80_TCP_PORT => 80
SCRAPER_API_SERVICE_PORT => 80
IMAGE_CLASSIFICATION_API_PORT_80_TCP_PORT => 80
KUBERNETES_SERVICE_HOST => 10.0.0.1
KUBERNETES_PORT => tcp://10.0.0.1:443
KUBERNETES_PORT_443_TCP_PORT => 443
STORYBOOK_PORT_80_TCP_PORT => 80
IMAGE_CLASSIFICATION_API_SERVICE_PORT => 80
PATH => /root/.yarn/bin:/root/.config/yarn/global/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
APP_PORT => tcp://10.0.69.59:80
MERCURE_SERVICE_PORT => 80
PHP_INI_SCAN_DIR => :/usr/local/etc/php/app.conf.d
SCRAPER_API_PORT => tcp://10.0.108.79:80
APP_SERVICE_HOST => 10.0.69.59
PHP_ASC_URL => https://www.php.net/distributions/php-8.2.25.tar.xz.asc
PHP_CPPFLAGS => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
APP_PORT_80_TCP_PROTO => tcp
APP_PORT_80_TCP => tcp://10.0.69.59:80
_ => /usr/local/bin/php

PHP Variables

Variable => Value
$_SERVER['KUBERNETES_SERVICE_PORT_HTTPS'] => 443
$_SERVER['APP_PORT_85_TCP_ADDR'] => 10.0.69.59
$_SERVER['KUBERNETES_SERVICE_PORT'] => 443
$_SERVER['HOSTNAME'] => app-6d65b4dccc-djccg
$_SERVER['PHP_VERSION'] => 8.2.25
$_SERVER['APP_SERVICE_PORT'] => 80
$_SERVER['STORYBOOK_SERVICE_PORT_HTTP'] => 80
$_SERVER['PHP_INI_DIR'] => /usr/local/etc/php
$_SERVER['GPG_KEYS'] => 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
$_SERVER['XDG_DATA_HOME'] => /data
$_SERVER['STORYBOOK_PORT_80_TCP'] => tcp://10.0.103.136:80
$_SERVER['IMAGE_CLASSIFICATION_API_PORT_80_TCP'] => tcp://10.0.205.239:80
$_SERVER['GODEBUG'] => cgocheck=0
$_SERVER['XDG_CONFIG_HOME'] => /config
$_SERVER['APP_PORT_85_TCP_PROTO'] => tcp
$_SERVER['PHP_LDFLAGS'] => -Wl,-O1 -pie
$_SERVER['STORYBOOK_SERVICE_PORT'] => 80
$_SERVER['IMAGE_CLASSIFICATION_API_PORT_80_TCP_ADDR'] => 10.0.205.239
$_SERVER['MERCURE_PORT_80_TCP_ADDR'] => 10.0.175.171
$_SERVER['PWD'] => /var/www/html
$_SERVER['APP_PORT_80_TCP_ADDR'] => 10.0.69.59
$_SERVER['IMAGE_CLASSIFICATION_API_PORT'] => tcp://10.0.205.239:80
$_SERVER['APP_SERVICE_PORT_HTTP'] => 80
$_SERVER['MERCURE_PORT_80_TCP_PORT'] => 80
$_SERVER['TZ'] => Europe/Amsterdam
$_SERVER['APP_PORT_85_TCP_PORT'] => 85
$_SERVER['HOME'] => /root
$_SERVER['KUBERNETES_PORT_443_TCP'] => tcp://10.0.0.1:443
$_SERVER['MERCURE_SERVICE_HOST'] => 10.0.175.171
$_SERVER['MERCURE_PORT_80_TCP_PROTO'] => tcp
$_SERVER['STORYBOOK_PORT'] => tcp://10.0.103.136:80
$_SERVER['SCRAPER_API_PORT_80_TCP_PROTO'] => tcp
$_SERVER['APP_SERVICE_PORT_METRICS'] => 85
$_SERVER['MERCURE_SERVICE_PORT_HTTP'] => 80
$_SERVER['STORYBOOK_SERVICE_HOST'] => 10.0.103.136
$_SERVER['SCRAPER_API_SERVICE_PORT_HTTP'] => 80
$_SERVER['IMAGE_CLASSIFICATION_API_PORT_80_TCP_PROTO'] => tcp
$_SERVER['PHP_SHA256'] => 330b54876ea1d05ade12ee9726167332058bccd58dffa1d4e12117f6b4f616b9
$_SERVER['STORYBOOK_PORT_80_TCP_ADDR'] => 10.0.103.136
$_SERVER['SCRAPER_API_PORT_80_TCP_PORT'] => 80
$_SERVER['PHPIZE_DEPS'] => autoconf             dpkg-dev                file            g++             gcc             libc-dev                make            pkg-config              re2c
$_SERVER['IMAGE_CLASSIFICATION_API_SERVICE_HOST'] => 10.0.205.239
$_SERVER['IMAGE_CLASSIFICATION_API_SERVICE_PORT_HTTP'] => 80
$_SERVER['TERM'] => xterm
$_SERVER['SCRAPER_API_PORT_80_TCP'] => tcp://10.0.108.79:80
$_SERVER['PHP_URL'] => https://www.php.net/distributions/php-8.2.25.tar.xz
$_SERVER['APP_PORT_85_TCP'] => tcp://10.0.69.59:85
$_SERVER['SCRAPER_API_SERVICE_HOST'] => 10.0.108.79
$_SERVER['SCRAPER_API_PORT_80_TCP_ADDR'] => 10.0.108.79
$_SERVER['STORYBOOK_PORT_80_TCP_PROTO'] => tcp
$_SERVER['SHLVL'] => 1
$_SERVER['COMPOSER_ALLOW_SUPERUSER'] => 1
$_SERVER['KUBERNETES_PORT_443_TCP_PROTO'] => tcp
$_SERVER['PHP_CFLAGS'] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_SERVER['MERCURE_PORT_80_TCP'] => tcp://10.0.175.171:80
$_SERVER['MERCURE_PORT'] => tcp://10.0.175.171:80
$_SERVER['KUBERNETES_PORT_443_TCP_ADDR'] => 10.0.0.1
$_SERVER['APP_PORT_80_TCP_PORT'] => 80
$_SERVER['SCRAPER_API_SERVICE_PORT'] => 80
$_SERVER['IMAGE_CLASSIFICATION_API_PORT_80_TCP_PORT'] => 80
$_SERVER['KUBERNETES_SERVICE_HOST'] => 10.0.0.1
$_SERVER['KUBERNETES_PORT'] => tcp://10.0.0.1:443
$_SERVER['KUBERNETES_PORT_443_TCP_PORT'] => 443
$_SERVER['STORYBOOK_PORT_80_TCP_PORT'] => 80
$_SERVER['IMAGE_CLASSIFICATION_API_SERVICE_PORT'] => 80
$_SERVER['PATH'] => /root/.yarn/bin:/root/.config/yarn/global/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$_SERVER['APP_PORT'] => tcp://10.0.69.59:80
$_SERVER['MERCURE_SERVICE_PORT'] => 80
$_SERVER['PHP_INI_SCAN_DIR'] => :/usr/local/etc/php/app.conf.d
$_SERVER['SCRAPER_API_PORT'] => tcp://10.0.108.79:80
$_SERVER['APP_SERVICE_HOST'] => 10.0.69.59
$_SERVER['PHP_ASC_URL'] => https://www.php.net/distributions/php-8.2.25.tar.xz.asc
$_SERVER['PHP_CPPFLAGS'] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_SERVER['APP_PORT_80_TCP_PROTO'] => tcp
$_SERVER['APP_PORT_80_TCP'] => tcp://10.0.69.59:80
$_SERVER['_'] => /usr/local/bin/php
$_SERVER['PHP_SELF'] => 
$_SERVER['SCRIPT_NAME'] => 
$_SERVER['SCRIPT_FILENAME'] => 
$_SERVER['PATH_TRANSLATED'] => 
$_SERVER['DOCUMENT_ROOT'] => 
$_SERVER['REQUEST_TIME_FLOAT'] => 1730881579.9789
$_SERVER['REQUEST_TIME'] => 1730881579
$_SERVER['argv'] => Array
(
)

$_SERVER['argc'] => 0
$_ENV['KUBERNETES_SERVICE_PORT_HTTPS'] => 443
$_ENV['APP_PORT_85_TCP_ADDR'] => 10.0.69.59
$_ENV['KUBERNETES_SERVICE_PORT'] => 443
$_ENV['HOSTNAME'] => app-6d65b4dccc-djccg
$_ENV['PHP_VERSION'] => 8.2.25
$_ENV['APP_SERVICE_PORT'] => 80
$_ENV['STORYBOOK_SERVICE_PORT_HTTP'] => 80
$_ENV['PHP_INI_DIR'] => /usr/local/etc/php
$_ENV['GPG_KEYS'] => 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A 1198C0117593497A5EC5C199286AF1F9897469DC
$_ENV['XDG_DATA_HOME'] => /data
$_ENV['STORYBOOK_PORT_80_TCP'] => tcp://10.0.103.136:80
$_ENV['IMAGE_CLASSIFICATION_API_PORT_80_TCP'] => tcp://10.0.205.239:80
$_ENV['GODEBUG'] => cgocheck=0
$_ENV['XDG_CONFIG_HOME'] => /config
$_ENV['APP_PORT_85_TCP_PROTO'] => tcp
$_ENV['PHP_LDFLAGS'] => -Wl,-O1 -pie
$_ENV['STORYBOOK_SERVICE_PORT'] => 80
$_ENV['IMAGE_CLASSIFICATION_API_PORT_80_TCP_ADDR'] => 10.0.205.239
$_ENV['MERCURE_PORT_80_TCP_ADDR'] => 10.0.175.171
$_ENV['PWD'] => /var/www/html
$_ENV['APP_PORT_80_TCP_ADDR'] => 10.0.69.59
$_ENV['IMAGE_CLASSIFICATION_API_PORT'] => tcp://10.0.205.239:80
$_ENV['APP_SERVICE_PORT_HTTP'] => 80
$_ENV['MERCURE_PORT_80_TCP_PORT'] => 80
$_ENV['TZ'] => Europe/Amsterdam
$_ENV['APP_PORT_85_TCP_PORT'] => 85
$_ENV['HOME'] => /root
$_ENV['KUBERNETES_PORT_443_TCP'] => tcp://10.0.0.1:443
$_ENV['MERCURE_SERVICE_HOST'] => 10.0.175.171
$_ENV['MERCURE_PORT_80_TCP_PROTO'] => tcp
$_ENV['STORYBOOK_PORT'] => tcp://10.0.103.136:80
$_ENV['SCRAPER_API_PORT_80_TCP_PROTO'] => tcp
$_ENV['APP_SERVICE_PORT_METRICS'] => 85
$_ENV['MERCURE_SERVICE_PORT_HTTP'] => 80
$_ENV['STORYBOOK_SERVICE_HOST'] => 10.0.103.136
$_ENV['SCRAPER_API_SERVICE_PORT_HTTP'] => 80
$_ENV['IMAGE_CLASSIFICATION_API_PORT_80_TCP_PROTO'] => tcp
$_ENV['PHP_SHA256'] => 330b54876ea1d05ade12ee9726167332058bccd58dffa1d4e12117f6b4f616b9
$_ENV['STORYBOOK_PORT_80_TCP_ADDR'] => 10.0.103.136
$_ENV['SCRAPER_API_PORT_80_TCP_PORT'] => 80
$_ENV['PHPIZE_DEPS'] => autoconf                dpkg-dev                file            g++             gcc             libc-dev                make            pkg-config              re2c
$_ENV['IMAGE_CLASSIFICATION_API_SERVICE_HOST'] => 10.0.205.239
$_ENV['IMAGE_CLASSIFICATION_API_SERVICE_PORT_HTTP'] => 80
$_ENV['TERM'] => xterm
$_ENV['SCRAPER_API_PORT_80_TCP'] => tcp://10.0.108.79:80
$_ENV['PHP_URL'] => https://www.php.net/distributions/php-8.2.25.tar.xz
$_ENV['APP_PORT_85_TCP'] => tcp://10.0.69.59:85
$_ENV['SCRAPER_API_SERVICE_HOST'] => 10.0.108.79
$_ENV['SCRAPER_API_PORT_80_TCP_ADDR'] => 10.0.108.79
$_ENV['STORYBOOK_PORT_80_TCP_PROTO'] => tcp
$_ENV['SHLVL'] => 1
$_ENV['COMPOSER_ALLOW_SUPERUSER'] => 1
$_ENV['KUBERNETES_PORT_443_TCP_PROTO'] => tcp
$_ENV['PHP_CFLAGS'] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_ENV['MERCURE_PORT_80_TCP'] => tcp://10.0.175.171:80
$_ENV['MERCURE_PORT'] => tcp://10.0.175.171:80
$_ENV['KUBERNETES_PORT_443_TCP_ADDR'] => 10.0.0.1
$_ENV['APP_PORT_80_TCP_PORT'] => 80
$_ENV['SCRAPER_API_SERVICE_PORT'] => 80
$_ENV['IMAGE_CLASSIFICATION_API_PORT_80_TCP_PORT'] => 80
$_ENV['KUBERNETES_SERVICE_HOST'] => 10.0.0.1
$_ENV['KUBERNETES_PORT'] => tcp://10.0.0.1:443
$_ENV['KUBERNETES_PORT_443_TCP_PORT'] => 443
$_ENV['STORYBOOK_PORT_80_TCP_PORT'] => 80
$_ENV['IMAGE_CLASSIFICATION_API_SERVICE_PORT'] => 80
$_ENV['PATH'] => /root/.yarn/bin:/root/.config/yarn/global/node_modules/.bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
$_ENV['APP_PORT'] => tcp://10.0.69.59:80
$_ENV['MERCURE_SERVICE_PORT'] => 80
$_ENV['PHP_INI_SCAN_DIR'] => :/usr/local/etc/php/app.conf.d
$_ENV['SCRAPER_API_PORT'] => tcp://10.0.108.79:80
$_ENV['APP_SERVICE_HOST'] => 10.0.69.59
$_ENV['PHP_ASC_URL'] => https://www.php.net/distributions/php-8.2.25.tar.xz.asc
$_ENV['PHP_CPPFLAGS'] => -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
$_ENV['APP_PORT_80_TCP_PROTO'] => tcp
$_ENV['APP_PORT_80_TCP'] => tcp://10.0.69.59:80
$_ENV['_'] => /usr/local/bin/php

PHP License
This program is free software; you can redistribute it and/or modify
it under the terms of the PHP License as published by the PHP Group
and included in the distribution in the file:  LICENSE

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

If you did not receive a copy of the PHP license, or have any
questions about PHP licensing, please contact license@php.net.

Relevant log output

################ Start FrankenPHP ################ 
{"level":"info","ts":1730881115.6973963,"msg":"using config from file","file":"/var/www/html/.docker/frankenphp/Caddyfile"}
{"level":"info","ts":1730881115.6984708,"msg":"adapted config to JSON","adapter":"caddyfile"}
{"level":"warn","ts":1730881115.6984835,"msg":"Caddyfile input is not formatted; run 'caddy fmt --overwrite' to fix inconsistencies","adapter":"caddyfile","file":"/var/www/html/.docker/frankenphp/Caddyfile","line":15}
{"level":"info","ts":1730881115.699203,"logger":"admin","msg":"admin endpoint started","address":"localhost:2019","enforce_origin":false,"origins":["//localhost:2019","//[::1]:2019","//127.0.0.1:2019"]}
{"level":"warn","ts":1730881115.6993783,"logger":"http.auto_https","msg":"server is listening only on the HTTP port, so no automatic HTTPS will be applied to this server","server_name":"srv0","http_port":80}
{"level":"info","ts":1730881115.6994014,"logger":"tls.cache.maintenance","msg":"started background certificate maintenance","cache":"0xc000935480"}
{"level":"info","ts":1730881115.6997063,"logger":"http.log","msg":"server running","name":"srv0","protocols":["h1","h2","h3"]}
{"level":"info","ts":1730881115.699732,"logger":"http.log","msg":"server running","name":"srv1","protocols":["h1","h2","h3"]}
{"level":"info","ts":1730881115.7017167,"logger":"tls","msg":"cleaning storage unit","storage":"FileStorage:/data/caddy"}
{"level":"info","ts":1730881115.7018588,"logger":"tls","msg":"finished cleaning storage units"}
<br />
<b>Warning</b>:  Can't preload unlinked class App\UX\DataTable\Adapter\Doctrine\ORM\QueryBuilderProcessorInterface@anonymous: Unknown interface App\UX\DataTable\Adapter\Doctrine\ORM\QueryBuilderProcessorInterface in <b>/var/www/html/src/UX/DataTable/Adapter/Doctrine/ORMAdapter.php</b> on line <b>238</b><br />
{"level":"info","ts":1730881124.2756066,"msg":"FrankenPHP started 🐘","php_version":"8.2.25","num_threads":26}
{"level":"info","ts":1730881124.2758808,"msg":"autosaved config (load with --resume flag)","file":"/config/caddy/autosave.json"}
{"level":"info","ts":1730881124.2758927,"msg":"serving initial configuration"}
<some requests......>
Segmentation fault (core dumped)

Caddyfile

{
    frankenphp {
        num_threads: 6
        worker {
            file /var/www/html/public/index.php
            num 25
            env APP_RUNTIME Runtime\FrankenPhpSymfony\Runtime
        }
    }
}

:85 {
    metrics
    log {
        output stderr
        level WARN
        format console
    }
}

:80 {
    log {
        output stderr
        level DEBUG
        format console
    }

    root * /var/www/html/public
    encode zstd br gzip

    vulcain

    header {
        -Server
        -X-Powered-By
        ?Permissions-Policy "browsing-topics=()"
        X-XSS-Protection "1; mode=block"
        X-Content-Type-Options "nosniff"
    }

    header /bundles/* {
        Cache-Control "max-age=86400, private"
    }

    header /build/* {
        Cache-Control "max-age=86400, private"
    }

    php_server
}

EDIT: Another error appears, maybe related ?

github.com/caddyserver/caddy/v2/modules/caddyhttp.RouteList.Compile.wrapRoute.func1.1({0x7f33ac7b0810, 0xc00033e3c0}, 0xc000121560)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/routes.go:268 +0x244 fp=0xc000e86df0 sp=0xc000e86d78 pc=0x1342c24
github.com/caddyserver/caddy/v2/modules/caddyhttp.HandlerFunc.ServeHTTP(0x2325640?, {0x7f33ac7b0810?, 0xc00033e3c0?}, 0xe?)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/caddyhttp.go:58 +0x29 fp=0xc000e86e18 sp=0xc000e86df0 pc=0x1326289
github.com/caddyserver/caddy/v2/modules/caddyhttp.RouteList.Compile.wrapRoute.func1.1({0x7f33ac7b0810, 0xc00033e3c0}, 0xc000121560)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/routes.go:268 +0x244 fp=0xc000e86e90 sp=0xc000e86e18 pc=0x1342c24
github.com/caddyserver/caddy/v2/modules/caddyhttp.HandlerFunc.ServeHTTP(0xc000e86f20?, {0x7f33ac7b0810?, 0xc00033e3c0?}, 0x4?)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/caddyhttp.go:58 +0x29 fp=0xc000e86eb8 sp=0xc000e86e90 pc=0x1326289
github.com/caddyserver/caddy/v2/modules/caddyhttp.VarsMiddleware.ServeHTTP(0xc00015d8c0, {0x7f33ac7b0810, 0xc00033e3c0}, 0xc000121560, {0x230f9e0, 0xc0001309e0})
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/vars.go:67 +0x2c2 fp=0xc000e86f90 sp=0xc000e86eb8 pc=0x134bd22
github.com/caddyserver/caddy/v2/modules/caddyhttp.(*VarsMiddleware).ServeHTTP(0xc00015c600?, {0x7f33ac7b0810?, 0xc00033e3c0?}, 0xc00015c7e0?, {0x230f9e0?, 0xc0001309e0?})
    <autogenerated>:1 +0x38 fp=0xc000e86fd0 sp=0xc000e86f90 pc=0x1355538
github.com/caddyserver/caddy/v2/modules/caddyhttp.wrapMiddleware.func1.1({0x7f33ac7b0810, 0xc00033e3c0}, 0xc000121560)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/routes.go:333 +0xd2 fp=0xc000e87030 sp=0xc000e86fd0 pc=0x1343032
github.com/caddyserver/caddy/v2/modules/caddyhttp.HandlerFunc.ServeHTTP(0x230f9e0?, {0x7f33ac7b0810?, 0xc00033e3c0?}, 0xc000121560?)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/caddyhttp.go:58 +0x29 fp=0xc000e87058 sp=0xc000e87030 pc=0x1326289
github.com/caddyserver/caddy/v2/modules/caddyhttp.RouteList.Compile.wrapRoute.func1.1({0x7f33ac7b0810, 0xc00033e3c0}, 0xc000121560)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/routes.go:300 +0x325 fp=0xc000e870d0 sp=0xc000e87058 pc=0x1342d05
github.com/caddyserver/caddy/v2/modules/caddyhttp.HandlerFunc.ServeHTTP(0x7f33ac7e3018?, {0x7f33ac7b0810?, 0xc00033e3c0?}, 0x18?)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/caddyhttp.go:58 +0x29 fp=0xc000e870f8 sp=0xc000e870d0 pc=0x1326289
github.com/caddyserver/caddy/v2/modules/caddyhttp.(*Server).enforcementHandler(0x415ce5?, {0x7f33ac7b0810?, 0xc00033e3c0?}, 0x1?, {0x230f9e0?, 0xc000130a00?})
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/server.go:447 +0x24b fp=0xc000e871d0 sp=0xc000e870f8 pc=0x13455ab
github.com/caddyserver/caddy/v2/modules/caddyhttp.(*App).Provision.(*Server).wrapPrimaryRoute.func1({0x7f33ac7b0810?, 0xc00033e3c0?}, 0x4e23af?)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/server.go:423 +0x35 fp=0xc000e87210 sp=0xc000e871d0 pc=0x131c7f5
github.com/caddyserver/caddy/v2/modules/caddyhttp.HandlerFunc.ServeHTTP(0xc0002e4870?, {0x7f33ac7b0810?, 0xc00033e3c0?}, 0xc000121560?)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/caddyhttp.go:58 +0x29 fp=0xc000e87238 sp=0xc000e87210 pc=0x1326289
github.com/caddyserver/caddy/v2/modules/caddyhttp.(*Server).ServeHTTP(0xc000877208, {0x2320da0, 0xc0008120e0}, 0xc000121200)
    /root/go/pkg/mod/github.com/caddyserver/caddy/v2@v2.8.4/modules/caddyhttp/server.go:353 +0xbbc fp=0xc000e87b60 sp=0xc000e87238 pc=0x134429c
net/http.serverHandler.ServeHTTP({0x231a1b8?}, {0x2320da0?, 0xc0008120e0?}, 0x6?)
    /usr/local/go/src/net/http/server.go:3142 +0x8e fp=0xc000e87b90 sp=0xc000e87b60 pc=0x7c38ae
net/http.(*conn).serve(0xc000989c20, {0x2325640, 0xc000490b70})
    /usr/local/go/src/net/http/server.go:2044 +0x5e8 fp=0xc000e87fb8 sp=0xc000e87b90 pc=0x7beb88
net/http.(*Server).Serve.gowrap3()
    /usr/local/go/src/net/http/server.go:3290 +0x28 fp=0xc000e87fe0 sp=0xc000e87fb8 pc=0x7c40c8
runtime.goexit({})
    /usr/local/go/src/runtime/asm_amd64.s:1695 +0x1 fp=0xc000e87fe8 sp=0xc000e87fe0 pc=0x47d9a1
created by net/http.(*Server).Serve in goroutine 24
    /usr/local/go/src/net/http/server.go:3290 +0x4b4
jpvdw86 commented 2 weeks ago

Small update. We just disabled worker mode and now its working without any segmentation faults

dunglas commented 2 weeks ago

Would you manage to gather a stack trace? This is the only way we can get an idea of what's going on :/

Alliballibaba2 commented 2 weeks ago

Could you also try with worker mode with op_cache disabled?

jpvdw86 commented 5 days ago

In certain situations, we experienced significant issues with gmagick. As a result, we reverted to PHP 8.2 with imagick, which resolved some of the problems.

However, segmentation faults still occur frequently. To address this, we disabled the opcache preload function. It seemed to reduce the errors somewhat, but this observation is based purely on intuition. We have not fully disabled opcache to test further. @Alliballibaba2

@dunglas Unfortunately, I was unable to generate a stack trace or kernel dumps. We rolled back the environment to a version without FrankenPHP. On the test environment, I couldn't reproduce the issue, likely due to insufficient load to simulate the real-world scenario.

We also performed a load test with K6, but everything ran smoothly during testing. The issue arises only under real-time conditions, where large amounts of data and forms are processed. This is challenging to replicate in a controlled test environment. The application in question is an internal tool used to streamline business processes and is protected behind SSO authentication.