Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

macOS build issues (M1) #840

Closed
nikspyratos opened this issue Jun 2, 2024 · 13 comments
Closed

macOS build issues (M1) #840

nikspyratos opened this issue Jun 2, 2024 · 13 comments
Labels
bug Something isn't working

Comments

@nikspyratos
Copy link

What happened?

Heyo. Been playing around with static builds. Got the Linux one with Docker working fine - though haven't yet tested the binary, and the build was suuuuper slow (#835). Next I wanted to try out the macOS build. Been fighting through a few issues and I'm at the point where this stuff is above my head. If nothing else I'd like to report this I'm also using Laravel Herd, which AFAICT is a normal build of PHP.

Issue 1:
composer check-platform-reqs (added in 404086d) has a chance to put builtin PHP extensions in the PHP_EXTENSIONS var, and ./bin/spc seems to not be happy with that (on macOS at least). Stripping out the builtins from the extensions list seems to solve the problem.

Issue 2:
Once the extensions thing was fixed, the go build failed because something about how the CGO_FLAGS variable is built duplicates search paths for the linker. After some consultation with Claude AI, it suggested removing the sed part, which worked for me.
The error was:

ld: warning: search path '/Users/nik/Documents/dev/niksoftware-projects/frankenphp/dist/static-php-cli/buildroot//Users/nik/Documents/dev/niksoftware-projects/frankenphp/dist/static-php-cli/buildroot/lib' not found
ld: warning: search path '/Users/nik/Documents/dev/niksoftware-projects/frankenphp/dist/static-php-cli/buildroot//Users/nik/Documents/dev/niksoftware-projects/frankenphp/dist/static-php-cli/buildroot/lib' not found
ld: warning: search path '/Users/nik/Documents/dev/niksoftware-projects/frankenphp/dist/static-php-cli/buildroot//Users/nik/Documents/dev/niksoftware-projects/frankenphp/dist/static-php-cli/buildroot/lib' not found
Undefined symbols for architecture arm64:
  "_BZ2_bzCompress", referenced from:
      _process in libzip.a[114](zip_algorithm_bzip2.c.o)
  "_BZ2_bzCompressEnd", referenced from:
      _end in libzip.a[114](zip_algorithm_bzip2.c.o)
  "_BZ2_bzCompressInit", referenced from:
      _start in libzip.a[114](zip_algorithm_bzip2.c.o)
  "_BZ2_bzDecompress", referenced from:
      _process in libzip.a[114](zip_algorithm_bzip2.c.o)
  "_BZ2_bzDecompressEnd", referenced from:
      _end in libzip.a[114](zip_algorithm_bzip2.c.o)
  "_BZ2_bzDecompressInit", referenced from:
      _start in libzip.a[114](zip_algorithm_bzip2.c.o)
ld: symbol(s) not found for architecture arm64

Issue 3:
Lastly, I'm getting the same ./frankenphp.h:4:10: fatal error: 'Zend/zend_types.h' file not found error as in #825. At this point I gave up. From that issue and the compile docs linked, it suggests that the static builds are an alternative to compiling from sources, so my understanding is that I shouldn't need to go as deep as downloading the PHP source for this?

Build Type

Custom (tell us more in the description)

Worker Mode

No

Operating System

macOS

CPU Architecture

Apple Silicon

PHP configuration

phpinfo()
PHP Version => 8.3.7

System => Darwin Niks-MacBook-Pro.local 23.4.0 Darwin Kernel Version 23.4.0: Fri Mar 15 00:12:41 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T8103 arm64
Build Date => May 10 2024 12:46:59
Build System => Darwin oh-162-55-253-165 22.5.0 Darwin Kernel Version 22.5.0: Mon Apr 24 20:53:44 PDT 2023; root:xnu-8796.121.2~5/RELEASE_ARM64_T8103 arm64
Configure Command =>  './configure'  '--prefix=' '--with-valgrind=no' '--enable-shared=no' '--enable-static=yes' '--disable-all' '--disable-cgi' '--disable-phpdbg' '--enable-cli' '--enable-fpm' '--disable-embed' '--disable-micro' '--enable-intl' '--enable-pdo' '--with-sqlite3=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-pdo-sqlite' '--with-curl' '--with-zlib' '--with-zlib-dir=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-openssl=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-openssl-dir=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--enable-tokenizer' '--enable-bcmath' '--with-bz2=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--enable-calendar' '--enable-dba' '--enable-ftp' '--with-iconv=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--enable-mysqlnd' '--with-mysqli' '--enable-mbstring' '--enable-mbregex' '--enable-xml' '--enable-simplexml' '--enable-ctype' '--enable-dom' '--enable-filter' '--enable-session' '--enable-fileinfo' '--with-pdo-mysql' '--enable-posix' '--enable-sockets' '--enable-shmop' '--with-sodium' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--enable-gd' '--with-freetype' '--with-jpeg' '--with-webp' '--with-zip=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-gmp=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--enable-igbinary' '--enable-redis' '--enable-redis-session' '--enable-redis-igbinary' '--enable-redis-zstd' '--enable-redis-lz4' '--with-liblz4=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--enable-xmlwriter' '--enable-phar' '--enable-exif' '--enable-xmlreader' '--with-readline=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--enable-pcntl' '--enable-soap' '--with-libxml=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-imagick=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-ffi' '--enable-zend-signals' '--with-password-argon2=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-pgsql=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-pdo-pgsql=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-imap=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-imap-ssl=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-ldap=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--with-xsl=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--enable-zstd' '--with-libzstd=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot' '--enable-opcache' 'PKG_CONFIG=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot/bin/pkg-config' 'PKG_CONFIG_PATH=/Users/runner/actions-runner/_work/static-php-builder/static-php-builder/buildroot/lib/pkgconfig'
Server API => Command Line Interface
Virtual Directory Support => disabled
Configuration File (php.ini) Path => /lib
Loaded Configuration File => (none)
Scan this dir for additional .ini files => /Users/nik/Library/Application Support/Herd/config/php/83/
Additional .ini files parsed => /Users/nik/Library/Application Support/Herd/config/php/83/php.ini

PHP API => 20230831
PHP Extension => 20230831
Zend Extension => 420230831
Zend Extension Build => API420230831,NTS
PHP Extension Build => API20230831,NTS
Debug Build => no
Thread Safety => disabled
Zend Signal Handling => enabled
Zend Memory Manager => enabled
Zend Multibyte Support => provided by mbstring
Zend Max Execution Timers => disabled
IPv6 Support => enabled
DTrace Support => disabled

Registered PHP Streams => https, ftps, compress.zlib, compress.bzip2, php, file, glob, data, http, ftp, phar, zip, compress.zstd
Registered Stream Socket Transports => tcp, udp, unix, udg, ssl, tls, tlsv1.0, tlsv1.1, tlsv1.2, tlsv1.3
Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, convert.*, consumed, dechunk

This program makes use of the Zend Scripting Language Engine:
Zend Engine v4.3.7, Copyright (c) Zend Technologies
    with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies


 _______________________________________________________________________


Configuration

bcmath

BCMath support => enabled

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

bz2

BZip2 Support => Enabled
Stream Wrapper support => compress.bzip2://
Stream Filter support => bzip2.decompress, bzip2.compress
BZip2 Version => 1.0.8, 13-Jul-2019

calendar

Calendar support => enabled

Core

PHP Version => 8.3.7

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 => /Applications/Herd.app/Contents/Resources/valet/dump-loader.php => /Applications/Herd.app/Contents/Resources/valet/dump-loader.php
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 => On => On
extension_dir => /lib/php/extensions/no-debug-non-zts-20230831 => /lib/php/extensions/no-debug-non-zts-20230831
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 => .: => .:
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 => 1000 => 1000
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 => 8M => 8M
precision => 14 => 14
realpath_cache_size => 4096K => 4096K
realpath_cache_ttl => 120 => 120
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
static-php-cli.version => 2.2.0 => 2.2.0
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 => 20M => 20M
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 => On => On
zend.enable_gc => On => On
zend.exception_ignore_args => Off => Off
zend.exception_string_param_max_len => 15 => 15
zend.max_allowed_stack_size => 0 => 0
zend.multibyte => Off => Off
zend.reserved_stack_size => 0 => 0
zend.script_encoding => no value => no value
zend.signal_check => Off => Off

ctype

ctype functions => enabled

curl

cURL support => enabled
cURL Information => 8.7.1
Age => 10
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => No
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => No
SPNEGO => No
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => Yes
GSSAPI => No
KERBEROS5 => No
UNIX_SOCKETS => Yes
PSL => No
HTTPS_PROXY => Yes
MULTI_SSL => No
BROTLI => No
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, rtsp, smb, smbs, smtp, smtps, telnet, tftp
Host => Darwin
SSL Version => OpenSSL/3.1.4
ZLib Version => 1.3.1

Directive => Local Value => Master Value
curl.cainfo => /Users/nik/Library/Application Support/Herd/config/php/cacert.pem => /Users/nik/Library/Application Support/Herd/config/php/cacert.pem

date

date/time support => enabled
timelib version => 2022.10
"Olson" Timezone Database Version => 2024.1
Timezone Database => internal
Default timezone => UTC

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 => UTC => UTC

dba

DBA support => enabled
Supported handlers => cdb cdb_make inifile flatfile

Directive => Local Value => Master Value
dba.default_handler => flatfile => flatfile

dom

DOM/XML => enabled
DOM/XML API Version => 20031129
libxml Version => 2.12.5
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

FFI

FFI support => enabled

Directive => Local Value => Master Value
ffi.enable => preload => preload
ffi.preload => no value => no value

fileinfo

fileinfo support => enabled
libmagic => 543

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.13.2
GIF Read Support => enabled
GIF Create Support => enabled
JPEG Support => enabled
libJPEG Version => 6b
PNG Support => enabled
libPNG Version => 1.6.44.git
WBMP Support => enabled
XBM Support => enabled
WebP Support => enabled
BMP Support => enabled
TGA Read Support => enabled

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

gmp

gmp support => enabled
GMP version => 6.2.1

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

iconv

iconv support => enabled
iconv implementation => libiconv
iconv library version => 1.17

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

igbinary

igbinary support => enabled
igbinary version => 3.2.15
igbinary APCu serializer ABI => no
igbinary session support => yes

Directive => Local Value => Master Value
igbinary.compact_strings => On => On

imagick

imagick module => enabled
imagick module version => 3.7.0
imagick classes => Imagick, ImagickDraw, ImagickPixel, ImagickPixelIterator, ImagickKernel
Imagick compiled with ImageMagick version => ImageMagick 7.1.1-32 Q16-HDRI aarch64 e1de8c5eb:20240505 https://imagemagick.org
Imagick using ImageMagick library version => ImageMagick 7.1.1-32 Q16-HDRI aarch64 e1de8c5eb:20240505 https://imagemagick.org
ImageMagick copyright => (C) 1999 ImageMagick Studio LLC
ImageMagick release date => 2024-05-05
ImageMagick number of supported formats:  => 259
ImageMagick supported formats => 3FR, 3G2, 3GP, A, AAI, AI, APNG, ART, ARW, ASHLAR, AVI, AVS, B, BAYER, BAYERA, BGR, BGRA, BGRO, BMP, BMP2, BMP3, BRF, C, CAL, CALS, CANVAS, CAPTION, CIN, CIP, CLIP, CMYK, CMYKA, CR2, CR3, CRW, CUBE, CUR, CUT, DATA, DCM, DCR, DCRAW, DCX, DDS, DFONT, DNG, DPX, DXT1, DXT5, EPDF, EPI, EPS, EPS2, EPS3, EPSF, EPSI, EPT, EPT2, EPT3, ERF, FARBFELD, FAX, FF, FFF, FILE, FITS, FL32, FLV, FRACTAL, FTP, FTS, FTXT, G, G3, G4, GIF, GIF87, GRADIENT, GRAY, GRAYA, GROUP4, HALD, HDR, HISTOGRAM, HRZ, HTM, HTML, HTTP, HTTPS, ICB, ICO, ICON, IIQ, INFO, INLINE, IPL, ISOBRL, ISOBRL6, JNG, JNX, JPE, JPEG, JPG, JPS, JSON, K, K25, KDC, LABEL, M, M2V, M4V, MAC, MAP, MASK, MAT, MATTE, MDC, MEF, MIFF, MKV, MNG, MONO, MOS, MOV, MP4, MPC, MPEG, MPG, MPO, MRW, MSL, MSVG, MTV, MVG, NEF, NRW, NULL, O, ORA, ORF, OTB, OTF, PAL, PALM, PAM, PANGO, PATTERN, PBM, PCD, PCDS, PCL, PCT, PCX, PDB, PDF, PDFA, PEF, PES, PFA, PFB, PFM, PGM, PGX, PHM, PICON, PICT, PIX, PJPEG, PLASMA, PNG, PNG00, PNG24, PNG32, PNG48, PNG64, PNG8, PNM, POCKETMOD, PPM, PS, PS2, PS3, PSB, PSD, PTIF, PWP, QOI, R, RADIAL-GRADIENT, RAF, RAS, RAW, RGB, RGB565, RGBA, RGBO, RGF, RLA, RLE, RMF, RW2, RWL, SCR, SCREENSHOT, SCT, SFW, SGI, SHTML, SIX, SIXEL, SPARSE-COLOR, SR2, SRF, SRW, STEGANO, STI, STRIMG, SUN, SVG, SVGZ, TEXT, TGA, THUMBNAIL, TIFF, TIFF64, TILE, TIM, TM2, TTC, TTF, TXT, UBRL, UBRL6, UIL, UYVY, VDA, VICAR, VID, VIFF, VIPS, VST, WBMP, WEBM, WEBP, WMV, WPG, X3F, XBM, XC, XCF, XPM, XPS, XV, Y, YAML, 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

imap

IMAP c-Client Version => 2007f
SSL Support => enabled

Directive => Local Value => Master Value
imap.enable_insecure_rsh => Off => Off

intl

Internationalization support => enabled
ICU version => 75.1
ICU Data version => 75.1
ICU TZData version => 2024a
ICU Unicode version => 15.1

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

ldap

LDAP Support => enabled
Total Links => 0/unlimited
API Version => 3001
Vendor Name => OpenLDAP
Vendor Version => 20607

Directive => Local Value => Master Value
ldap.max_links => Unlimited => Unlimited

libxml

libXML support => active
libXML Compiled Version => 2.12.5
libXML Loaded Version => 21205
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.9

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

mysqli

MysqlI Support => enabled
Client API library version => mysqlnd 8.3.7
Active Persistent Links => 0
Inactive Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
mysqli.allow_local_infile => Off => Off
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.local_infile_directory => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.rollback_on_cached_plink => Off => Off

mysqlnd

mysqlnd => enabled
Version => mysqlnd 8.3.7
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 => mysqli,pdo_mysql

openssl

OpenSSL support => enabled
OpenSSL Library Version => OpenSSL 3.1.4 24 Oct 2023
OpenSSL Header Version => OpenSSL 3.1.4 24 Oct 2023
Openssl default config => /System/Library/OpenSSL/openssl.cnf

Directive => Local Value => Master Value
openssl.cafile => /Users/nik/Library/Application Support/Herd/config/php/cacert.pem => /Users/nik/Library/Application Support/Herd/config/php/cacert.pem
openssl.capath => no value => no value

pcntl

pcntl support => enabled

pcre

PCRE (Perl Compatible Regular Expressions) Support => enabled
PCRE Library Version => 10.42 2022-12-12
PCRE Unicode Version => 14.0.0
PCRE JIT Support => enabled
PCRE JIT Target => ARM-64 64bit (little endian + unaligned)

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

PDO

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

pdo_mysql

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

Directive => Local Value => Master Value
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

pdo_pgsql

PDO Driver for PostgreSQL => enabled
PostgreSQL(libpq) Version => 16.2

pdo_sqlite

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

pgsql

PostgreSQL Support => enabled
PostgreSQL (libpq) Version => 16.2
Multibyte character support => enabled
Active Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
pgsql.allow_persistent => On => On
pgsql.auto_reset_persistent => Off => Off
pgsql.ignore_notice => Off => Off
pgsql.log_notice => Off => Off
pgsql.max_links => Unlimited => Unlimited
pgsql.max_persistent => Unlimited => Unlimited

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 => enabled
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.3.7

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 => 5.3.7
Redis Sentinel Version => 0.1
Available serializers => php, json, igbinary
Available compression => 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.lock_expire => 0 => 0
redis.session.lock_retries => 10 => 10
redis.session.lock_wait_time => 2000 => 2000
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 igbinary

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 => Off => Off
session.use_trans_sid => Off => Off

shmop

shmop support => enabled

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

sockets

Sockets Support => enabled

sodium

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

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.43.2

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

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

sysvmsg

sysvmsg support => enabled

sysvsem

sysvsem support => enabled

sysvshm

sysvshm support => enabled

tokenizer

Tokenizer Support => enabled

xml

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

xmlreader

XMLReader => enabled

xmlwriter

XMLWriter => enabled

xsl

XSL => enabled
libxslt Version => 1.1.39
libxslt compiled against libxml Version => 2.12.5
EXSLT => enabled
libexslt Version => 0.8.21

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.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 => 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 => 8 => 8
opcache.jit => tracing => tracing
opcache.jit_bisect_limit => 0 => 0
opcache.jit_blacklist_root_trace => 16 => 16
opcache.jit_blacklist_side_trace => 8 => 8
opcache.jit_buffer_size => 0 => 0
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_max_trace_length => 1024 => 1024
opcache.jit_prof_threshold => 0.005 => 0.005
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 => 0x7FFEBFFF => 0x7FFEBFFF
opcache.preferred_memory_model => no value => no value
opcache.preload => no value => no value
opcache.preload_user => no value => no value
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 => On => On

zip

Zip => enabled
Zip version => 1.22.3
Libzip version => 1.10.1
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.3.1
Linked Version => 1.3.1

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

zstd

Zstd support => enabled
Extension Version => 0.13.3
Interface Version => 1.5.6

Additional Modules

Module Name

Environment

Variable => Value
COLORTERM => truecolor
COMMAND_MODE => unix2003
HOME => /Users/nik
LC_CTYPE => UTF-8
LOGNAME => nik
PATH => /Users/nik/Library/Application Support/Herd/bin/:/Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Users/nik/Library/Application Support/JetBrains/Toolbox/scripts:/Users/nik/.orbstack/bin
SHELL => /bin/zsh
SSH_AUTH_SOCK => /private/tmp/com.apple.launchd.oeTsqAO24P/Listeners
SSH_SOCKET_DIR => ~/.ssh
TERM => xterm-256color
TERM_PROGRAM => WarpTerminal
TERM_PROGRAM_VERSION => v0.2024.05.28.08.02.stable_00
TMPDIR => /var/folders/d1/43y_4_g95g56z1p78h3_j_8m0000gn/T/
USER => nik
WARP_COMBINED_PROMPT_COMMAND_GRID => 0
WARP_HONOR_PS1 => 0
WARP_IS_LOCAL_SHELL_SESSION => 1
WARP_USE_SSH_WRAPPER => 1
XPC_FLAGS => 0x0
XPC_SERVICE_NAME => 0
__CFBundleIdentifier => dev.warp.Warp-Stable
__CF_USER_TEXT_ENCODING => 0x1F5:0x0:0x0
SHLVL => 1
PWD => /Users/nik/Documents/dev/niksoftware-projects/toybox
OLDPWD => /Users/nik/Documents/dev/niksoftware-projects/frankenphp
HOMEBREW_PREFIX => /opt/homebrew
HOMEBREW_CELLAR => /opt/homebrew/Cellar
HOMEBREW_REPOSITORY => /opt/homebrew
MANPATH => /Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/share/man:/opt/homebrew/share/man::
INFOPATH => /opt/homebrew/share/info:
NVM_DIR => /Users/nik/Library/Application Support/Herd/config/nvm
NVM_CD_FLAGS => -q
NVM_BIN => /Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/bin
NVM_INC => /Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/include/node
HERD_PHP_83_INI_SCAN_DIR => /Users/nik/Library/Application Support/Herd/config/php/83/
HERD_PHP_82_INI_SCAN_DIR => /Users/nik/Library/Application Support/Herd/config/php/82/
CONDA_CHANGEPS1 => false
_ => /Users/nik/Library/Application Support/Herd/bin//php

PHP Variables

Variable => Value
$_SERVER['COLORTERM'] => truecolor
$_SERVER['COMMAND_MODE'] => unix2003
$_SERVER['HOME'] => /Users/nik
$_SERVER['LC_CTYPE'] => UTF-8
$_SERVER['LOGNAME'] => nik
$_SERVER['PATH'] => /Users/nik/Library/Application Support/Herd/bin/:/Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Users/nik/Library/Application Support/JetBrains/Toolbox/scripts:/Users/nik/.orbstack/bin
$_SERVER['SHELL'] => /bin/zsh
$_SERVER['SSH_AUTH_SOCK'] => /private/tmp/com.apple.launchd.oeTsqAO24P/Listeners
$_SERVER['SSH_SOCKET_DIR'] => ~/.ssh
$_SERVER['TERM'] => xterm-256color
$_SERVER['TERM_PROGRAM'] => WarpTerminal
$_SERVER['TERM_PROGRAM_VERSION'] => v0.2024.05.28.08.02.stable_00
$_SERVER['TMPDIR'] => /var/folders/d1/43y_4_g95g56z1p78h3_j_8m0000gn/T/
$_SERVER['USER'] => nik
$_SERVER['WARP_COMBINED_PROMPT_COMMAND_GRID'] => 0
$_SERVER['WARP_HONOR_PS1'] => 0
$_SERVER['WARP_IS_LOCAL_SHELL_SESSION'] => 1
$_SERVER['WARP_USE_SSH_WRAPPER'] => 1
$_SERVER['XPC_FLAGS'] => 0x0
$_SERVER['XPC_SERVICE_NAME'] => 0
$_SERVER['__CFBundleIdentifier'] => dev.warp.Warp-Stable
$_SERVER['__CF_USER_TEXT_ENCODING'] => 0x1F5:0x0:0x0
$_SERVER['SHLVL'] => 1
$_SERVER['PWD'] => /Users/nik/Documents/dev/niksoftware-projects/toybox
$_SERVER['OLDPWD'] => /Users/nik/Documents/dev/niksoftware-projects/frankenphp
$_SERVER['HOMEBREW_PREFIX'] => /opt/homebrew
$_SERVER['HOMEBREW_CELLAR'] => /opt/homebrew/Cellar
$_SERVER['HOMEBREW_REPOSITORY'] => /opt/homebrew
$_SERVER['MANPATH'] => /Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/share/man:/opt/homebrew/share/man::
$_SERVER['INFOPATH'] => /opt/homebrew/share/info:
$_SERVER['NVM_DIR'] => /Users/nik/Library/Application Support/Herd/config/nvm
$_SERVER['NVM_CD_FLAGS'] => -q
$_SERVER['NVM_BIN'] => /Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/bin
$_SERVER['NVM_INC'] => /Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/include/node
$_SERVER['HERD_PHP_83_INI_SCAN_DIR'] => /Users/nik/Library/Application Support/Herd/config/php/83/
$_SERVER['HERD_PHP_82_INI_SCAN_DIR'] => /Users/nik/Library/Application Support/Herd/config/php/82/
$_SERVER['CONDA_CHANGEPS1'] => false
$_SERVER['_'] => /Users/nik/Library/Application Support/Herd/bin//php
$_SERVER['PHP_SELF'] => Standard input code
$_SERVER['SCRIPT_NAME'] => Standard input code
$_SERVER['SCRIPT_FILENAME'] =>
$_SERVER['PATH_TRANSLATED'] =>
$_SERVER['DOCUMENT_ROOT'] =>
$_SERVER['REQUEST_TIME_FLOAT'] => 1717309096.8712
$_SERVER['REQUEST_TIME'] => 1717309096
$_SERVER['argv'] => Array
(
    [0] => Standard input code
)

$_SERVER['argc'] => 1
$_ENV['COLORTERM'] => truecolor
$_ENV['COMMAND_MODE'] => unix2003
$_ENV['HOME'] => /Users/nik
$_ENV['LC_CTYPE'] => UTF-8
$_ENV['LOGNAME'] => nik
$_ENV['PATH'] => /Users/nik/Library/Application Support/Herd/bin/:/Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Users/nik/Library/Application Support/JetBrains/Toolbox/scripts:/Users/nik/.orbstack/bin
$_ENV['SHELL'] => /bin/zsh
$_ENV['SSH_AUTH_SOCK'] => /private/tmp/com.apple.launchd.oeTsqAO24P/Listeners
$_ENV['SSH_SOCKET_DIR'] => ~/.ssh
$_ENV['TERM'] => xterm-256color
$_ENV['TERM_PROGRAM'] => WarpTerminal
$_ENV['TERM_PROGRAM_VERSION'] => v0.2024.05.28.08.02.stable_00
$_ENV['TMPDIR'] => /var/folders/d1/43y_4_g95g56z1p78h3_j_8m0000gn/T/
$_ENV['USER'] => nik
$_ENV['WARP_COMBINED_PROMPT_COMMAND_GRID'] => 0
$_ENV['WARP_HONOR_PS1'] => 0
$_ENV['WARP_IS_LOCAL_SHELL_SESSION'] => 1
$_ENV['WARP_USE_SSH_WRAPPER'] => 1
$_ENV['XPC_FLAGS'] => 0x0
$_ENV['XPC_SERVICE_NAME'] => 0
$_ENV['__CFBundleIdentifier'] => dev.warp.Warp-Stable
$_ENV['__CF_USER_TEXT_ENCODING'] => 0x1F5:0x0:0x0
$_ENV['SHLVL'] => 1
$_ENV['PWD'] => /Users/nik/Documents/dev/niksoftware-projects/toybox
$_ENV['OLDPWD'] => /Users/nik/Documents/dev/niksoftware-projects/frankenphp
$_ENV['HOMEBREW_PREFIX'] => /opt/homebrew
$_ENV['HOMEBREW_CELLAR'] => /opt/homebrew/Cellar
$_ENV['HOMEBREW_REPOSITORY'] => /opt/homebrew
$_ENV['MANPATH'] => /Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/share/man:/opt/homebrew/share/man::
$_ENV['INFOPATH'] => /opt/homebrew/share/info:
$_ENV['NVM_DIR'] => /Users/nik/Library/Application Support/Herd/config/nvm
$_ENV['NVM_CD_FLAGS'] => -q
$_ENV['NVM_BIN'] => /Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/bin
$_ENV['NVM_INC'] => /Users/nik/Library/Application Support/Herd/config/nvm/versions/node/v18.20.3/include/node
$_ENV['HERD_PHP_83_INI_SCAN_DIR'] => /Users/nik/Library/Application Support/Herd/config/php/83/
$_ENV['HERD_PHP_82_INI_SCAN_DIR'] => /Users/nik/Library/Application Support/Herd/config/php/82/
$_ENV['CONDA_CHANGEPS1'] => false
$_ENV['_'] => /Users/nik/Library/Application Support/Herd/bin//php


 _______________________________________________________________________

PHP Credits

PHP Group
Thies C. Arntzen, Stig Bakken, Shane Caraveo, Andi Gutmans, Rasmus Lerdorf, Sam Ruby, Sascha Schumann, Zeev Suraski, Jim Winstead, Andrei Zmievski

Language Design & Concept
Andi Gutmans, Rasmus Lerdorf, Zeev Suraski, Marcus Boerger

                               PHP Authors
Contribution => Authors
Zend Scripting Language Engine => Andi Gutmans, Zeev Suraski, Stanislav Malyshev, Marcus Boerger, Dmitry Stogov, Xinchen Hui, Nikita Popov
Extension Module API => Andi Gutmans, Zeev Suraski, Andrei Zmievski
UNIX Build and Modularization => Stig Bakken, Sascha Schumann, Jani Taskinen, Peter Kokot
Windows Support => Shane Caraveo, Zeev Suraski, Wez Furlong, Pierre-Alain Joye, Anatol Belski, Kalle Sommer Nielsen
Server API (SAPI) Abstraction Layer => Andi Gutmans, Shane Caraveo, Zeev Suraski
Streams Abstraction Layer => Wez Furlong, Sara Golemon
PHP Data Objects Layer => Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky
Output Handler => Zeev Suraski, Thies C. Arntzen, Marcus Boerger, Michael Wallner
Consistent 64 bit support => Anthony Ferrara, Anatol Belski

                               SAPI Modules
Contribution => Authors
Apache 2.0 Handler => Ian Holsman, Justin Erenkrantz (based on Apache 2.0 Filter code)
CGI / FastCGI => Rasmus Lerdorf, Stig Bakken, Shane Caraveo, Dmitry Stogov
CLI => Edin Kadribasic, Marcus Boerger, Johannes Schlueter, Moriyoshi Koizumi, Xinchen Hui
Embed => Edin Kadribasic
FastCGI Process Manager => Andrei Nigmatulin, dreamcat4, Antony Dovgal, Jerome Loyet
litespeed => George Wang
phpdbg => Felipe Pena, Joe Watkins, Bob Weinand

                              Module Authors
Module => Authors
BC Math => Andi Gutmans
Bzip2 => Sterling Hughes
Calendar => Shane Caraveo, Colin Viebrock, Hartmut Holzgraefe, Wez Furlong
COM and .Net => Wez Furlong
ctype => Hartmut Holzgraefe
cURL => Sterling Hughes
Date/Time Support => Derick Rethans
DB-LIB (MS SQL, Sybase) => Wez Furlong, Frank M. Kromann, Adam Baratz
DBA => Sascha Schumann, Marcus Boerger
DOM => Christian Stocker, Rob Richards, Marcus Boerger
enchant => Pierre-Alain Joye, Ilia Alshanetsky
EXIF => Rasmus Lerdorf, Marcus Boerger
FFI => Dmitry Stogov
fileinfo => Ilia Alshanetsky, Pierre Alain Joye, Scott MacVicar, Derick Rethans, Anatol Belski
Firebird driver for PDO => Ard Biesheuvel
FTP => Stefan Esser, Andrew Skalski
GD imaging => Rasmus Lerdorf, Stig Bakken, Jim Winstead, Jouni Ahto, Ilia Alshanetsky, Pierre-Alain Joye, Marcus Boerger, Mark Randall
GetText => Alex Plotnick
GNU GMP support => Stanislav Malyshev
Iconv => Rui Hirokawa, Stig Bakken, Moriyoshi Koizumi
IMAP => Rex Logan, Mark Musone, Brian Wang, Kaj-Michael Lang, Antoni Pamies Olive, Rasmus Lerdorf, Andrew Skalski, Chuck Hagenbuch, Daniel R Kalowsky
Input Filter => Rasmus Lerdorf, Derick Rethans, Pierre-Alain Joye, Ilia Alshanetsky
Internationalization => Ed Batutis, Vladimir Iordanov, Dmitry Lakhtyuk, Stanislav Malyshev, Vadim Savchuk, Kirti Velankar
JSON => Jakub Zelenka, Omar Kilani, Scott MacVicar
LDAP => Amitay Isaacs, Eric Warnke, Rasmus Lerdorf, Gerrit Thomson, Stig Venaas
LIBXML => Christian Stocker, Rob Richards, Marcus Boerger, Wez Furlong, Shane Caraveo
Multibyte String Functions => Tsukada Takuya, Rui Hirokawa
MySQL driver for PDO => George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter
MySQLi => Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel
MySQLnd => Andrey Hristov, Ulf Wendel, Georg Richter, Johannes Schlüter
OCI8 => Stig Bakken, Thies C. Arntzen, Andy Sautins, David Benson, Maxim Maletsky, Harald Radi, Antony Dovgal, Andi Gutmans, Wez Furlong, Christopher Jones, Oracle Corporation
ODBC driver for PDO => Wez Furlong
ODBC => Stig Bakken, Andreas Karajannis, Frank M. Kromann, Daniel R. Kalowsky
Opcache => Andi Gutmans, Zeev Suraski, Stanislav Malyshev, Dmitry Stogov, Xinchen Hui
OpenSSL => Stig Venaas, Wez Furlong, Sascha Kettler, Scott MacVicar, Eliot Lear
Oracle (OCI) driver for PDO => Wez Furlong
pcntl => Jason Greene, Arnaud Le Blanc
Perl Compatible Regexps => Andrei Zmievski
PHP Archive => Gregory Beaver, Marcus Boerger
PHP Data Objects => Wez Furlong, Marcus Boerger, Sterling Hughes, George Schlossnagle, Ilia Alshanetsky
PHP hash => Sara Golemon, Rasmus Lerdorf, Stefan Esser, Michael Wallner, Scott MacVicar
Posix => Kristian Koehntopp
PostgreSQL driver for PDO => Edin Kadribasic, Ilia Alshanetsky
PostgreSQL => Jouni Ahto, Zeev Suraski, Yasuo Ohgaki, Chris Kings-Lynne
Pspell => Vlad Krupin
random => Go Kudo, Tim Düsterhus, Guilliam Xavier, Christoph M. Becker, Jakub Zelenka, Bob Weinand, Máté Kocsis, and Original RNG implementators
Readline => Thies C. Arntzen
Reflection => Marcus Boerger, Timm Friebe, George Schlossnagle, Andrei Zmievski, Johannes Schlueter
Sessions => Sascha Schumann, Andrei Zmievski
Shared Memory Operations => Slava Poliakov, Ilia Alshanetsky
SimpleXML => Sterling Hughes, Marcus Boerger, Rob Richards
SNMP => Rasmus Lerdorf, Harrie Hazewinkel, Mike Jackson, Steven Lawrance, Johann Hanne, Boris Lytochkin
SOAP => Brad Lafountain, Shane Caraveo, Dmitry Stogov
Sockets => Chris Vandomelen, Sterling Hughes, Daniel Beulshausen, Jason Greene
Sodium => Frank Denis
SPL => Marcus Boerger, Etienne Kneuss
SQLite 3.x driver for PDO => Wez Furlong
SQLite3 => Scott MacVicar, Ilia Alshanetsky, Brad Dewar
System V Message based IPC => Wez Furlong
System V Semaphores => Tom May
System V Shared Memory => Christian Cartus
tidy => John Coggeshall, Ilia Alshanetsky
tokenizer => Andrei Zmievski, Johannes Schlueter
XML => Stig Bakken, Thies C. Arntzen, Sterling Hughes
XMLReader => Rob Richards
XMLWriter => Rob Richards, Pierre-Alain Joye
XSL => Christian Stocker, Rob Richards
Zip => Pierre-Alain Joye, Remi Collet
Zlib => Rasmus Lerdorf, Stefan Roehrich, Zeev Suraski, Jade Nicoletti, Michael Wallner

                            PHP Documentation
Authors => Mehdi Achour, Friedhelm Betz, Antony Dovgal, Nuno Lopes, Hannes Magnusson, Philip Olson, Georg Richter, Damien Seguy, Jakub Vrana, Adam Harvey
Editor => Peter Cowburn
User Note Maintainers => Daniel P. Brown, Thiago Henrique Pojda
Other Contributors => Previously active authors, editors and other contributors are listed in the manual.

PHP Quality Assurance Team
Ilia Alshanetsky, Joerg Behrens, Antony Dovgal, Stefan Esser, Moriyoshi Koizumi, Magnus Maatta, Sebastian Nohn, Derick Rethans, Melvyn Sopacua, Pierre-Alain Joye, Dmitry Stogov, Felipe Pena, David Soria Parra, Stanislav Malyshev, Julien Pauli, Stephen Zarkos, Anatol Belski, Remi Collet, Ferenc Kovacs

                     Websites and Infrastructure team
PHP Websites Team => Rasmus Lerdorf, Hannes Magnusson, Philip Olson, Lukas Kahwe Smith, Pierre-Alain Joye, Kalle Sommer Nielsen, Peter Cowburn, Adam Harvey, Ferenc Kovacs, Levi Morrison
Event Maintainers => Damien Seguy, Daniel P. Brown
Network Infrastructure => Daniel P. Brown
Windows Infrastructure => Alex Schoenmaker

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

+ type git
++ uname -m
+ arch=arm64
++ uname -s
++ tr '[:upper:]' '[:lower:]'
+ os=darwin
+ md5binary=md5sum
+ '[' darwin = darwin ']'
+ os=mac
+ md5binary='md5 -q'
+ '[' mac = linux ']'
+ '[' -z '' ']'
+ '[' -n /Users/nik/Documents/dev/niksoftware-projects/toybox ']'
+ '[' -f /Users/nik/Documents/dev/niksoftware-projects/toybox/composer.json ']'
+ cd /Users/nik/Documents/dev/niksoftware-projects/toybox
++ composer check-platform-reqs --no-dev
++ grep '^ext'
++ sed -e 's/^ext-//' -e 's/ .*//'
++ xargs
++ tr ' ' ,
+ PHP_EXTENSIONS=ctype,curl,dom,fileinfo,filter,hash,iconv,intl,json,libxml,mbstring,openssl,pcre,session,tokenizer,xmlreader,zip
+ export PHP_EXTENSIONS
+ cd -
/Users/nik/Documents/dev/niksoftware-projects/frankenphp
+ '[' -z '' ']'
+ export PHP_EXTENSION_LIBS=bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip
+ PHP_EXTENSION_LIBS=bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip
+ echo bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip
+ grep -q '\bbrotli\b'
+ export PHP_EXTENSION_LIBS=bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip,brotli
+ PHP_EXTENSION_LIBS=bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip,brotli
+ '[' -z '' ']'
+ export PHP_VERSION=8.3
+ PHP_VERSION=8.3
+ '[' -z '' ']'
++ git rev-parse --verify HEAD
+ FRANKENPHP_VERSION=0b4a427cac1da044518ada44345bbafd98a0bc04
+ export FRANKENPHP_VERSION
+ bin=frankenphp-mac-arm64
+ '[' -n '' ']'
+ '[' -f dist/static-php-cli/buildroot/lib/libphp.a ']'
+ mkdir -p dist/
+ cd dist/
+ '[' -d static-php-cli/ ']'
+ cd static-php-cli/
+ git pull
Already up to date.
+ type brew
+ type composer
+ type go
+ '[' -n '' ']'
+ '[' -n '' ']'
+ composer install --no-dev -a
Installing dependencies from lock file
Verifying lock file contents can be installed on current platform.
Nothing to install, update or remove
Generating optimized autoload files
8 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
+ '[' mac = linux ']'
+ '[' -n '' ']'
+ ./bin/spc doctor --auto-fix
     _        _   _                 _
 ___| |_ __ _| |_(_) ___      _ __ | |__  _ __
/ __| __/ _` | __| |/ __|____| '_ \| '_ \| '_ \
\__ \ || (_| | |_| | (_|_____| |_) | | | | |_) |
|___/\__\__,_|\__|_|\___|    | .__/|_| |_| .__/   v2.2.2
                             |_|         |_|
Checking if current OS are supported ... Darwin arm64, supported
Checking if homebrew has installed ... ok
Checking if necessary tools are installed ... ok
Doctor check complete !
+ ./bin/spc download --with-php=8.3 --for-extensions=ctype,curl,dom,fileinfo,filter,hash,iconv,intl,json,libxml,mbstring,openssl,pcre,session,tokenizer,xmlreader,zip --for-libs=bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip,brotli --ignore-cache-sources=php-src

In DependencyUtil.php line 169:

  Extension [hash] not exist !


download [--shallow-clone] [--with-openssl11] [--with-php WITH-PHP] [--clean] [-A|--all] [-U|--custom-url CUSTOM-URL] [-Z|--from-zip FROM-ZIP] [-e|--for-extensions FOR-EXTENSIONS] [-l|--for-libs FOR-LIBS] [--without-suggestions] [--ignore-cache-sources IGNORE-CACHE-SOURCES] [-R|--retry RETRY] [--debug] [--no-motd] [--] <sources>
@nikspyratos nikspyratos added the bug Something isn't working label Jun 2, 2024
@withinboredom
Copy link
Collaborator

I'm much more inclined to say there is something wrong with your environment since static builds in CI appear to work fine. That being said, getting an environment in the right conditions when you're trying to do it on a computer you actually need to work on can be a bit frustrating (from experience). I highly recommend using a build environment specific to building this (such as a VM or CI).

That being said, it seems you resolved most of your issues? I'm unclear what the actual issue is here.

You say the issue is ./frankenphp.h:4:10: fatal error: 'Zend/zend_types.h' file not found but your logs indicate you're trying to install an extension that doesn't exist on the current platform: Extension [hash] not exist !

Can you clarify what issue you're running into?

@dunglas
Copy link
Owner

dunglas commented Jun 2, 2024

It's maybe a bug in the extension detection system of our shell script. Could you try to explicitly set PHP_EXTENSIONS? Could you also copy your composer.json please?

For the slow builds, try to disable UPX.

@nikspyratos
Copy link
Author

Can you clarify what issue you're running into?

I've run into three different problems here, the logs for the GH template are just the first one.

That being said, it seems you resolved most of your issues? I'm unclear what the actual issue is here.

I didn't, I gave up on the third and though it might be worth opening this issue as I surely can't be the only one with this problem. I get the impression macOS support isn't a priority, and I agree it shouldn't really be since prod is most likely going to be the linux build for most, but it's still worth having this report at least posted so others can follow the same trail.

Could you try to explicitly set PHP_EXTENSIONS

Sorry I wasn't clear in my description, I did do that and stripped out the defaults by hand. Then I got down to issue #2. Yes on my todo list for next time is not using UPX.

@dunglas
Copy link
Owner

dunglas commented Jun 3, 2024

The warnings are not important and can be safely ignored.

Issue 2 is weird and looks like a static-php-cli issue when building the zip extension (it happens). Could you try deleting entirely the dist/ (or starting with a fresh install) with PHP_EXTENSIONS and NO_COMPRESS explicitly set?

Anyway, we need to do a patch to filter out builtin extensions (like hash in your case).

@nikspyratos
Copy link
Author

The warnings are not important and can be safely ignored.

The search path ones? It wouldn't proceed with the build until I resolved that. The bzip and search path issue went away when I removed the sed part of line 123.

Anyway, we need to do a patch to filter out builtin extensions (like hash in your case).

Yep. I wouldn't mind taking a crack at it over the weekend with some bash-fu as well.

Could you try deleting entirely the dist/ (or starting with a fresh install) with PHP_EXTENSIONS and NO_COMPRESS explicitly set?

Same as issue 3 before - still goes all the way to ./frankenphp.h:4:10: fatal error: 'Zend/zend_types.h' file not found on the go build command. The zend_types.h file is definitely there though 🤔 If the problem is related to my aforementioned sed change then it's going to be a bit of a catch-22 to build.

@crazywhalecc
Copy link
Contributor

crazywhalecc commented Jun 5, 2024

@nikspyratos

  • Issue 1: static-php-cli can consider these builtin extensions (always enabled) as redundant input, and put them as warning messages if needed. (next version of spc)

  • Issue 2:

Undefined symbols for architecture arm64:
  "_BZ2_bzCompress", referenced from:
      _process in libzip.a[114](zip_algorithm_bzip2.c.o)

It seems it's compiling zip extension with bzip2 support, and compile again without bzip2 problem. Just make sure every different combination of extensions has a clean buildroot (rm -rf buildroot source before different build). And also duplicates search paths for the linker will not affect anything.

If you still get the same error when compiling, you can turn on full output logging and find all the arguments to the bin/spc build command line and print them out.

@nikspyratos
Copy link
Author

nikspyratos commented Jun 5, 2024

It seems it's compiling zip extension with bzip2 support, and compile again without bzip2 problem. Just make sure every different combination of extensions has a clean buildroot (rm -rf buildroot source before different build). And also duplicates search paths for the linker will not affect anything.

🤷‍♂️ That error only happens when those linker warnings are also present, and again removing sed s#-I/#-I"${PWD}"/buildroot/#g) from CGO_CFLAGS in the build script gets rid of both issues. If that doesn't make sense, I've got no idea, that's just what I'm experiencing.

here's the full output that I have, starting from a clean buildroot.

If you still get the same error when compiling, you can turn on full output logging and find all the arguments to the bin/spc build command line and print them out.

--debug is already an enabled option on the spc commands. Is there another arg for fuller logging?

@crazywhalecc
Copy link
Contributor

crazywhalecc commented Jun 5, 2024

@nikspyratos Could you provide this line of log (argv: ****)? This will show what arguments are passed to static-php-cli.

$ bin/spc build $PHP_EXTENSIONS --build-cli --build-micro --debug --with-libs=$PHP_EXTENSION_LIBS
     _        _   _                 _           
 ___| |_ __ _| |_(_) ___      _ __ | |__  _ __  
/ __| __/ _` | __| |/ __|____| '_ \| '_ \| '_ \ 
\__ \ || (_| | |_| | (_|_____| |_) | | | | |_) |
|___/\__\__,_|\__|_|\___|    | .__/|_| |_| .__/   v2.2.3
                             |_|         |_|    
[14:56:56] [DEBU] argv: bin/spc build hash,opcache,mbstring,zip --build-cli --build-micro --debug --with-libs=bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip

EDIT: Issue 1 Extension [hash] not exist ! bug has been fixed via crazywhalecc/static-php-cli#473 .

@nikspyratos
Copy link
Author

Nice!

Here's the log:

[15:27:41] [DEBU] argv: ./bin/spc build --debug --enable-zts --build-embed ctype,curl,dom,fileinfo,filter,iconv,intl,libxml,mbstring,openssl,session,tokenizer,xmlreader,zip --with-libs=bzip2,freetype,libavif,libjpeg,liblz4,libwebp,libzip,brotli

@crazywhalecc
Copy link
Contributor

crazywhalecc commented Jun 5, 2024

I just figured out what was causing the bzip2 link error.

  1. build static php with zip,xxxx extension (not include bz2 and zlib extension), with additional libs bzip2,yyy, if you build --build-cli, the libzip requires bzip2, and zip does not require it for now.
  2. It will cause configure check item zip_compression_method_supported -> no, and zip extension will not support any additional algorithm.
  3. if build with --build-embed, same as --build-cli, but this error only occurs when linking.
  4. The solution is also simple: include bz2,zlib,zip extensions at the same time. But I'll also adjust spc's deps config to prevent it.

@nikspyratos
Copy link
Author

That worked! Thanks!

For this specific issue, I think it can be closed now, but I believe there are some lingering issues about how extensions are pulled/listed from the embedded application (at least on the local app)

The build was successful, but since it was completely relying on the output of composer check-platform-reqs, it was missing extensions that should have been listed but weren't - for example PDO, as any artisan command I ran first had issues of not finding the PDO class.

So perhaps trying to auto-parse the extensions from a project isn't going to be as accurate as originally hoped, since many project dependencies don't include accurate extension requirements.

@dunglas
Copy link
Owner

dunglas commented Jun 5, 2024

That's a good opportunity to fix the composer.json of these projects to add the missing requirements 😃

It's always possible to use the environnement variable for specific needs.

@nikspyratos
Copy link
Author

100%. Will keep playing around with this, thanks for all the help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

4 participants