diff --git a/0001-add-sw_64-support.patch b/0001-add-sw_64-support.patch index cd59662b4509d15fcb8debaa6b0199426217d4a6..d90d37d92999c45ba747be40dcf1e1b6b43babfb 100644 --- a/0001-add-sw_64-support.patch +++ b/0001-add-sw_64-support.patch @@ -26,14 +26,14 @@ diff --git a/build/config.sub b/build/config.sub index 9865d6ea..9245db77 100644 --- a/build/config.sub +++ b/build/config.sub -@@ -1268,6 +1268,7 @@ case $cpu-$vendor in - | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v | sv1 | sx* \ +@@ -1430,6 +1430,7 @@ + | sparcv9b \ + | sparcv9v \ | spu \ + | sw_64 \ + | sv1 \ + | sx* \ | tahoe \ - | thumbv7* \ - | tic30 | tic4x | tic54x | tic55x | tic6x | tic80 \ -- 2.20.1 diff --git a/10-opcache.ini b/10-opcache.ini index d188ef0624a784428a53d816f601eca523bfa217..b3d4e6e6ee5cf9c6e96cbf8bb499636a7122d72a 100644 --- a/10-opcache.ini +++ b/10-opcache.ini @@ -67,10 +67,6 @@ opcache.blacklist_filename=/etc/php.d/opcache*.blacklist ; are cached. ;opcache.max_file_size=0 -; Check the cache checksum each N requests. -; The default value of "0" means that the checks are disabled. -;opcache.consistency_checks=0 - ; How long to wait (in seconds) for a scheduled restart to begin if the cache ; is not being accessed. ;opcache.force_restart_timeout=180 @@ -115,7 +111,12 @@ opcache.blacklist_filename=/etc/php.d/opcache*.blacklist ;opcache.file_cache_fallback=1 ; Enables or disables copying of PHP code (text segment) into HUGE PAGES. -; This should improve performance, but requires appropriate OS configuration. +; Under certain circumstances (if only a single global PHP process is +; started from which all others fork), this can increase performance +; by a tiny amount because TLB misses are reduced. On the other hand, this +; delays PHP startup, increases memory usage and degrades performance +; under memory pressure - use with care. +; Requires appropriate OS configuration. opcache.huge_code_pages=0 ; Validate cached file permissions. diff --git a/macros.php b/macros.php index 4a039aac1ada864a27d81607a825e7100d4247e1..d02c0487cb062a23bc343dc89cb6a9508542c7d2 100644 --- a/macros.php +++ b/macros.php @@ -18,4 +18,11 @@ %__php %{_bindir}/php %__ztsphp %{_bindir}/zts-php -%pecl_xmldir %{_sharedstatedir}/php/peclxml +%__phpize %{_bindir}/phpize +%__ztsphpize %{_bindir}/zts-phpize + +%__phpconfig %{_bindir}/php-config +%__ztsphpconfig %{_bindir}/zts-php-config + +%pecl_xmldir %{_localstatedir}/lib/php/peclxml + diff --git a/nginx-php.conf b/nginx-php.conf index 1df1b04309da0f85e091d88d3503785854955d28..9b0153613552a15605781223d6caeece9928b328 100644 --- a/nginx-php.conf +++ b/nginx-php.conf @@ -4,13 +4,11 @@ # index index.php index.html index.htm; -location ~ \.(php|phar)(/.*)?$ { - fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$; - +location ~ \.php$ { + try_files $uri =404; fastcgi_intercept_errors on; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; - fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php-fpm; } diff --git a/php-7.4.0-datetests.patch b/php-7.4.0-datetests.patch new file mode 100644 index 0000000000000000000000000000000000000000..8c437e50dd7e5ddba0322c520c0c1e177f2a78d1 --- /dev/null +++ b/php-7.4.0-datetests.patch @@ -0,0 +1,98 @@ +diff -up ./ext/date/tests/bug33414-2.phpt.datetests ./ext/date/tests/bug33414-2.phpt +--- ./ext/date/tests/bug33414-2.phpt.datetests 2020-04-09 14:06:11.000000000 +0200 ++++ ./ext/date/tests/bug33414-2.phpt 2020-04-09 14:40:00.809433489 +0200 +@@ -74,10 +74,10 @@ $strtotime_tstamp = strtotime("next Frid + print "result=".date("l Y-m-d H:i:s T I", $strtotime_tstamp)."\n"; + print "wanted=Friday 00:00:00\n\n"; + ?> +---EXPECT-- ++--EXPECTF-- + TZ=Pacific/Rarotonga - wrong day. +-tStamp=Thursday 1970-01-01 17:17:17 -1030 0 +-result=Tuesday 1970-01-06 00:00:00 -1030 0 ++tStamp=Thursday 1970-01-01 17:17:17 %s ++result=Tuesday 1970-01-06 00:00:00 %s + wanted=Tuesday 00:00:00 + + TZ=Atlantic/South_Georgia - wrong day. +@@ -91,13 +91,13 @@ result=Monday 2005-04-04 00:00:00 EDT 1 + wanted=Monday 00:00:00 + + TZ=Pacific/Enderbury - wrong day, off by 2 days. +-tStamp=Thursday 1970-01-01 17:17:17 -12 0 +-result=Monday 1970-01-05 00:00:00 -12 0 ++tStamp=Thursday 1970-01-01 17:17:17 %s ++result=Monday 1970-01-05 00:00:00 %s + wanted=Monday 00:00:00 + + TZ=Pacific/Kiritimati - wrong day, off by 2 days. +-tStamp=Thursday 1970-01-01 17:17:17 -1040 0 +-result=Monday 1970-01-05 00:00:00 -1040 0 ++tStamp=Thursday 1970-01-01 17:17:17 %s ++result=Monday 1970-01-05 00:00:00 %s + wanted=Monday 00:00:00 + + TZ=America/Managua - wrong day. +@@ -106,13 +106,13 @@ result=Tuesday 2005-04-12 00:00:00 CDT 1 + wanted=Tuesday 00:00:00 + + TZ=Pacific/Pitcairn - wrong day. +-tStamp=Thursday 1970-01-01 17:17:17 -0830 0 +-result=Wednesday 1970-01-07 00:00:00 -0830 0 ++tStamp=Thursday 1970-01-01 17:17:17 %s ++result=Wednesday 1970-01-07 00:00:00 %s + wanted=Wednesday 00:00:00 + + TZ=Pacific/Fakaofo - wrong day. +-tStamp=Thursday 1970-01-01 17:17:17 -11 0 +-result=Saturday 1970-01-03 00:00:00 -11 0 ++tStamp=Thursday 1970-01-01 17:17:17 %s ++result=Saturday 1970-01-03 00:00:00 %s + wanted=Saturday 00:00:00 + + TZ=Pacific/Johnston - wrong day. +diff -up ./ext/date/tests/bug66985.phpt.datetests ./ext/date/tests/bug66985.phpt +--- ./ext/date/tests/bug66985.phpt.datetests 2020-04-09 14:06:11.000000000 +0200 ++++ ./ext/date/tests/bug66985.phpt 2020-04-09 14:40:37.099288185 +0200 +@@ -3,7 +3,7 @@ Bug #66985 (Some timezones are no longer + --FILE-- + 3 +- [timezone] => Factory +-) +-DateTimeZone Object +-( + [timezone_type] => 3 + [timezone] => GB-Eire + ) +diff -up ./ext/date/tests/strtotime3-64bit.phpt.datetests ./ext/date/tests/strtotime3-64bit.phpt +--- ./ext/date/tests/strtotime3-64bit.phpt.datetests 2020-04-09 14:06:11.000000000 +0200 ++++ ./ext/date/tests/strtotime3-64bit.phpt 2020-04-09 14:40:00.809433489 +0200 +@@ -44,7 +44,7 @@ foreach ($strs as $str) { + } + + ?> +---EXPECT-- ++--EXPECTF-- + bool(false) + bool(false) + string(31) "Thu, 15 Jun 2006 00:00:00 +0100" +@@ -53,7 +53,7 @@ bool(false) + string(31) "Fri, 16 Jun 2006 23:49:12 +0100" + bool(false) + string(31) "Fri, 16 Jun 2006 02:22:00 +0100" +-string(31) "Sun, 16 Jun 0222 02:22:00 -0036" ++string(31) "Sun, 16 Jun 0222 02:22:00 %s" + string(31) "Fri, 16 Jun 2006 02:22:33 +0100" + bool(false) + string(31) "Tue, 02 Mar 2004 00:00:00 +0000" diff --git a/php-7.4.0-httpd.patch b/php-7.4.0-httpd.patch deleted file mode 100644 index 34f7c8ab34353f7d33afd8908e5a5d8b14455994..0000000000000000000000000000000000000000 --- a/php-7.4.0-httpd.patch +++ /dev/null @@ -1,27 +0,0 @@ -Disable MPM detection - -mod_php is build twice -- as NTS without option -- as ZTS using --enable-maintainer-zts - -diff --git a/sapi/apache2handler/config.m4 b/sapi/apache2handler/config.m4 ---- a/sapi/apache2handler/config.m4 -+++ b/sapi/apache2handler/config.m4 -@@ -105,17 +105,6 @@ if test "$PHP_APXS2" != "no"; then - ;; - esac - -- if test "$APACHE_VERSION" -lt 2004001; then -- APXS_MPM=`$APXS -q MPM_NAME` -- if test "$APXS_MPM" != "prefork" && test "$APXS_MPM" != "peruser" && test "$APXS_MPM" != "itk"; then -- PHP_BUILD_THREAD_SAFE -- fi -- else -- APACHE_THREADED_MPM=`$APXS_HTTPD -V 2>/dev/null | grep 'threaded:.*yes'` -- if test -n "$APACHE_THREADED_MPM"; then -- PHP_BUILD_THREAD_SAFE -- fi -- fi - AC_MSG_RESULT(yes) - PHP_SUBST(APXS) - else diff --git a/php-8.0.7-argon2.patch b/php-8.0.7-argon2.patch new file mode 100644 index 0000000000000000000000000000000000000000..88018deed2a4f87671615aa7d7b23e18f0941d3c --- /dev/null +++ b/php-8.0.7-argon2.patch @@ -0,0 +1,15 @@ +diff --git a/ext/sodium/sodium_pwhash.c b/ext/sodium/sodium_pwhash.c +index e58a9514cc..86cc06cd91 100644 +--- a/ext/sodium/sodium_pwhash.c ++++ b/ext/sodium/sodium_pwhash.c +@@ -62,10 +62,6 @@ static inline int get_options(zend_array *options, size_t *memlimit, size_t *ops + return FAILURE; + } + } +- if ((opt = zend_hash_str_find(options, "threads", strlen("threads"))) && (zval_get_long(opt) != 1)) { +- zend_value_error("A thread value other than 1 is not supported by this implementation"); +- return FAILURE; +- } + return SUCCESS; + } + diff --git a/php-8.3.0-openssl-ec-param.patch b/php-8.3.0-openssl-ec-param.patch deleted file mode 100644 index 94e4037fcec5e9cf821c0ca50ab2d8b82606b4b6..0000000000000000000000000000000000000000 --- a/php-8.3.0-openssl-ec-param.patch +++ /dev/null @@ -1,47 +0,0 @@ -From 21f9d16e130b412b6839494dcf30a2f1d7dcee0f Mon Sep 17 00:00:00 2001 -From: Remi Collet -Date: Mon, 24 Jul 2023 10:54:49 +0200 -Subject: [PATCH] Always warn about missing curve_name - -Both Fedora and RHEL do not support arbitrary EC parameters -See https://bugzilla.redhat.com/2223953 ---- - ext/openssl/openssl.c | 13 ++----------- - 1 file changed, 2 insertions(+), 11 deletions(-) - -diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c -index 33f51bfa4d..340b0467d3 100644 ---- a/ext/openssl/openssl.c -+++ b/ext/openssl/openssl.c -@@ -4299,13 +4299,8 @@ static bool php_openssl_pkey_init_legacy_ec(EC_KEY *eckey, zval *data, bool *is_ - OPENSSL_PKEY_SET_BN(data, b); - OPENSSL_PKEY_SET_BN(data, order); - -+ php_error_docref(NULL, E_WARNING, "Missing params: curve_name (params only is not supported by OpenSSL)"); - if (!(p && a && b && order)) { -- if (!p && !a && !b && !order) { -- php_error_docref(NULL, E_WARNING, "Missing params: curve_name"); -- } else { -- php_error_docref( -- NULL, E_WARNING, "Missing params: curve_name or p, a, b, order"); -- } - goto clean_exit; - } - -@@ -4455,12 +4450,8 @@ static EVP_PKEY *php_openssl_pkey_init_ec(zval *data, bool *is_private) { - OPENSSL_PKEY_SET_BN(data, b); - OPENSSL_PKEY_SET_BN(data, order); - -+ php_error_docref(NULL, E_WARNING, "Missing params: curve_name"); - if (!(p && a && b && order)) { -- if (!p && !a && !b && !order) { -- php_error_docref(NULL, E_WARNING, "Missing params: curve_name"); -- } else { -- php_error_docref(NULL, E_WARNING, "Missing params: curve_name or p, a, b, order"); -- } - goto cleanup; - } - --- -2.41.0 - diff --git a/php-8.0.0-embed.patch b/php-8.4.0-embed.patch similarity index 61% rename from php-8.0.0-embed.patch rename to php-8.4.0-embed.patch index 27533ea4e5e11214ffea6f2d8d0390abae7abbe0..ca4b4036854d149ee8d321eaae501c6933c24b98 100644 --- a/php-8.0.0-embed.patch +++ b/php-8.4.0-embed.patch @@ -1,20 +1,20 @@ diff -up ./sapi/embed/config.m4.embed ./sapi/embed/config.m4 ---- ./sapi/embed/config.m4.embed 2020-07-07 13:51:05.879764972 +0200 -+++ ./sapi/embed/config.m4 2020-07-07 13:52:50.128412148 +0200 +--- ./sapi/embed/config.m4.embed 2024-07-03 16:17:17.973277200 +0200 ++++ ./sapi/embed/config.m4 2024-07-03 16:19:32.224546927 +0200 @@ -12,7 +12,8 @@ if test "$PHP_EMBED" != "no"; then - yes|shared) + [yes|shared], [ LIBPHP_CFLAGS="-shared" PHP_EMBED_TYPE=shared -- INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(prefix)/lib; \$(INSTALL) -m 0755 $SAPI_SHARED \$(INSTALL_ROOT)\$(prefix)/lib" +- INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(orig_libdir); \$(INSTALL) -m 0755 $SAPI_SHARED \$(INSTALL_ROOT)\$(orig_libdir)" + EXTRA_LDFLAGS="$EXTRA_LDFLAGS -release \$(PHP_MAJOR_VERSION).\$(PHP_MINOR_VERSION)" + INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(libdir); \$(LIBTOOL) --mode=install \$(INSTALL) -m 0755 \$(OVERALL_TARGET) \$(INSTALL_ROOT)\$(libdir)" - ;; - static) + ], + [static], [ LIBPHP_CFLAGS="-static" diff -up ./scripts/php-config.in.embed ./scripts/php-config.in ---- ./scripts/php-config.in.embed 2020-07-07 12:54:42.000000000 +0200 -+++ ./scripts/php-config.in 2020-07-07 13:51:05.880764968 +0200 -@@ -18,7 +18,7 @@ exe_extension="@EXEEXT@" +--- ./scripts/php-config.in.embed 2024-07-03 16:17:17.973277200 +0200 ++++ ./scripts/php-config.in 2024-07-03 16:20:00.439654444 +0200 +@@ -19,7 +19,7 @@ exe_extension="@EXEEXT@" php_cli_binary=NONE php_cgi_binary=NONE configure_options="@CONFIGURE_OPTIONS@" @@ -22,4 +22,4 @@ diff -up ./scripts/php-config.in.embed ./scripts/php-config.in +php_sapis="apache2handler litespeed fpm phpdbg @PHP_INSTALLED_SAPIS@" ini_dir="@EXPANDED_PHP_CONFIG_FILE_SCAN_DIR@" ini_path="@EXPANDED_PHP_CONFIG_FILE_PATH@" - + php_embed_type="@PHP_EMBED_TYPE@" diff --git a/php-8.4.0-httpd.patch b/php-8.4.0-httpd.patch new file mode 100644 index 0000000000000000000000000000000000000000..227468c1515f8b577e6b143c56c11f955dbe61a0 --- /dev/null +++ b/php-8.4.0-httpd.patch @@ -0,0 +1,21 @@ +Disable MPM detection + +mod_php is build twice +- as NTS without option +- as ZTS using --enable-maintainer-zts + +diff -up ./sapi/apache2handler/config.m4.mpmcheck ./sapi/apache2handler/config.m4 +--- ./sapi/apache2handler/config.m4.mpmcheck 2024-07-03 15:56:56.882370597 +0200 ++++ ./sapi/apache2handler/config.m4 2024-07-03 15:59:15.967824949 +0200 +@@ -120,11 +120,6 @@ if test "$PHP_APXS2" != "no"; then + -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 + ]) + +- AS_IF([$APXS_HTTPD -V 2>/dev/null | grep 'threaded:.*yes' >/dev/null 2>&1], [ +- APACHE_THREADED_MPM=yes +- enable_zts=yes +- ], [APACHE_THREADED_MPM=no]) +- + AC_CONFIG_COMMANDS([apache2handler], [AS_VAR_IF([enable_zts], [yes],, + [AS_VAR_IF([APACHE_THREADED_MPM], [no], + [AC_MSG_WARN([ diff --git a/php-7.2.0-includedir.patch b/php-8.4.0-includedir.patch similarity index 42% rename from php-7.2.0-includedir.patch rename to php-8.4.0-includedir.patch index 6d9a871b46cc9a1dd6a6e149e285b324fe651d6a..8d3fcff19451f5301f02118a5a96387f3d91569c 100644 --- a/php-7.2.0-includedir.patch +++ b/php-8.4.0-includedir.patch @@ -1,11 +1,11 @@ ---- php-7.2.0/configure.ac.includedir -+++ php-7.2.0/configure.ac -@@ -1230,7 +1230,7 @@ +--- ./configure.ac.includedir ++++ ./configure.ac +@@ -1368,7 +1368,7 @@ EXPANDED_DATADIR=$datadir - EXPANDED_PHP_CONFIG_FILE_PATH=`eval echo "$PHP_CONFIG_FILE_PATH"` - EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=`eval echo "$PHP_CONFIG_FILE_SCAN_DIR"` + EXPANDED_PHP_CONFIG_FILE_PATH=$(eval echo "$PHP_CONFIG_FILE_PATH") + EXPANDED_PHP_CONFIG_FILE_SCAN_DIR=$(eval echo "$PHP_CONFIG_FILE_SCAN_DIR") -INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR -+INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR:${EXPANDED_DATADIR}/php ++INCLUDE_PATH=.:$EXPANDED_PEAR_INSTALLDIR:${EXPANDED_DATADIR}/php:/usr/share/pear:/usr/share/php exec_prefix=$old_exec_prefix libdir=$old_libdir diff --git a/php-7.4.0-ldap_r.patch b/php-8.4.0-ldap_r.patch similarity index 42% rename from php-7.4.0-ldap_r.patch rename to php-8.4.0-ldap_r.patch index 13566b40ef5c414febc1c602b5edad4b6fa1bad4..a57475196e39c290445c3c5e6ed1e65b09373bc8 100644 --- a/php-7.4.0-ldap_r.patch +++ b/php-8.4.0-ldap_r.patch @@ -1,19 +1,19 @@ Use -lldap_r by default. -diff -up php-7.4.0RC2/ext/ldap/config.m4.ldap_r php-7.4.0RC2/ext/ldap/config.m4 ---- php-7.4.0RC2/ext/ldap/config.m4.ldap_r 2019-09-17 10:21:24.769200812 +0200 -+++ php-7.4.0RC2/ext/ldap/config.m4 2019-09-17 10:21:30.658181771 +0200 -@@ -68,7 +68,11 @@ if test "$PHP_LDAP" != "no"; then - dnl -pc removal is a hack for clang - MACHINE_INCLUDES=$($CC -dumpmachine | $SED 's/-pc//') +diff -up php-8.4.0beta1/ext/ldap/config.m4.ldap_r php-8.4.0beta1/ext/ldap/config.m4 +--- php-8.4.0beta1/ext/ldap/config.m4.ldap_r 2024-08-13 15:48:12.000000000 +0200 ++++ php-8.4.0beta1/ext/ldap/config.m4 2024-08-13 16:23:24.744311776 +0200 +@@ -72,7 +72,11 @@ if test "$PHP_LDAP" != "no"; then + AH_TEMPLATE([HAVE_ORALDAP], + [Define to 1 if the ldap extension uses the Oracle Instant Client.]) - if test -f $LDAP_LIBDIR/liblber.a || test -f $LDAP_LIBDIR/liblber.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.a || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.$SHLIB_SUFFIX_NAME; then + if test -f $LDAP_LIBDIR/libldap_r.$SHLIB_SUFFIX_NAME; then -+ PHP_ADD_LIBRARY_WITH_PATH(lber, $LDAP_LIBDIR, LDAP_SHARED_LIBADD) -+ PHP_ADD_LIBRARY_WITH_PATH(ldap_r, $LDAP_LIBDIR, LDAP_SHARED_LIBADD) ++ PHP_ADD_LIBRARY_WITH_PATH(lber, [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD]) ++ PHP_ADD_LIBRARY_WITH_PATH(ldap_r, [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD]) + + elif test -f $LDAP_LIBDIR/liblber.a || test -f $LDAP_LIBDIR/liblber.$SHLIB_SUFFIX_NAME || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.a || test -f $LDAP_LIBDIR/$MACHINE_INCLUDES/liblber.$SHLIB_SUFFIX_NAME; then - PHP_ADD_LIBRARY_WITH_PATH(lber, $LDAP_LIBDIR, LDAP_SHARED_LIBADD) - PHP_ADD_LIBRARY_WITH_PATH(ldap, $LDAP_LIBDIR, LDAP_SHARED_LIBADD) + PHP_ADD_LIBRARY_WITH_PATH([lber], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD]) + PHP_ADD_LIBRARY_WITH_PATH([ldap], [$LDAP_LIBDIR], [LDAP_SHARED_LIBADD]) diff --git a/php-8.1.0-libdb.patch b/php-8.4.0-libdb.patch similarity index 80% rename from php-8.1.0-libdb.patch rename to php-8.4.0-libdb.patch index 7a2a097b807d734c1840545d950e435ff4a27e52..af7add0408b4b30bf04ed8ebdb0d5716e981e049 100644 --- a/php-8.1.0-libdb.patch +++ b/php-8.4.0-libdb.patch @@ -1,10 +1,10 @@ diff -up ./ext/dba/config.m4.libdb ./ext/dba/config.m4 --- ./ext/dba/config.m4.libdb 2020-04-09 14:06:11.000000000 +0200 +++ ./ext/dba/config.m4 2020-04-09 14:35:08.208605065 +0200 -@@ -375,61 +375,13 @@ if test "$PHP_DB4" != "no"; then - dbdp4="/usr/local/BerkeleyDB.4." - dbdp5="/usr/local/BerkeleyDB.5." - for i in $PHP_DB4 ${dbdp5}1 ${dbdp5}0 ${dbdp4}8 ${dbdp4}7 ${dbdp4}6 ${dbdp4}5 ${dbdp4}4 ${dbdp4}3 ${dbdp4}2 ${dbdp4}1 ${dbdp}0 /usr/local /usr; do +@@ -421,55 +421,7 @@ if test "$PHP_DB4" != "no"; then + /usr/local \ + /usr \ + ; do - if test -f "$i/db5/db.h"; then - THIS_PREFIX=$i - THIS_INCLUDE=$i/db5/db.h @@ -58,17 +58,31 @@ diff -up ./ext/dba/config.m4.libdb ./ext/dba/config.m4 THIS_PREFIX=$i THIS_INCLUDE=$i/include/db.h break - fi +@@ -477,20 +429,6 @@ if test "$PHP_DB4" != "no"; then done -- PHP_DBA_DB_CHECK(4, db-5.3 db-5.1 db-5.0 db-4.8 db-4.7 db-4.6 db-4.5 db-4.4 db-4.3 db-4.2 db-4.1 db-4.0 db-4 db4 db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)]) -+ PHP_DBA_DB_CHECK(4, db, [(void)db_create((DB**)0, (DB_ENV*)0, 0)]) - fi - PHP_DBA_STD_RESULT(db4,Berkeley DB4) - + PHP_DBA_DB_CHECK([4], + [ +- db-5.3 +- db-5.1 +- db-5.0 +- db-4.8 +- db-4.7 +- db-4.6 +- db-4.5 +- db-4.4 +- db-4.3 +- db-4.2 +- db-4.1 +- db-4.0 +- db-4 +- db4 + db + ], + [(void)db_create((DB**)0, (DB_ENV*)0, 0)]) diff -up ./ext/dba/dba.c.libdb ./ext/dba/dba.c --- ./ext/dba/dba.c.libdb 2020-04-09 14:06:11.000000000 +0200 +++ ./ext/dba/dba.c 2020-04-09 14:36:30.593275190 +0200 -@@ -50,6 +50,10 @@ +@@ -49,6 +49,10 @@ #include "php_lmdb.h" #include "dba_arginfo.h" @@ -79,7 +93,7 @@ diff -up ./ext/dba/dba.c.libdb ./ext/dba/dba.c PHP_MINIT_FUNCTION(dba); PHP_MSHUTDOWN_FUNCTION(dba); PHP_MINFO_FUNCTION(dba); -@@ -452,6 +456,10 @@ PHP_MINFO_FUNCTION(dba) +@@ -444,6 +448,10 @@ PHP_MINFO_FUNCTION(dba) php_info_print_table_start(); php_info_print_table_row(2, "DBA support", "enabled"); diff --git a/php-8.3.13-phpinfo.patch b/php-8.4.0-phpinfo.patch similarity index 61% rename from php-8.3.13-phpinfo.patch rename to php-8.4.0-phpinfo.patch index a02a2b8a9b79bbdb35fffcf0e96571798ffdec3f..47bdbdeda7e5dd24deb60c71d53af182f32d9739 100644 --- a/php-8.3.13-phpinfo.patch +++ b/php-8.4.0-phpinfo.patch @@ -7,9 +7,9 @@ Replace full GCC name by gcc in php -v output diff -up ./ext/standard/info.c.phpinfo ./ext/standard/info.c ---- ./ext/standard/info.c.phpinfo 2020-07-21 10:49:31.000000000 +0200 -+++ ./ext/standard/info.c 2020-07-21 11:41:56.295633523 +0200 -@@ -805,9 +805,6 @@ PHPAPI ZEND_COLD void php_print_info(int +--- ./ext/standard/info.c.phpinfo 2024-10-08 15:57:40.000000000 +0200 ++++ ./ext/standard/info.c 2024-10-08 16:10:11.330510009 +0200 +@@ -814,9 +814,6 @@ PHPAPI ZEND_COLD void php_print_info(int #ifdef PHP_BUILD_ARCH php_info_print_table_row(2, "Architecture", PHP_BUILD_ARCH); #endif @@ -20,8 +20,8 @@ diff -up ./ext/standard/info.c.phpinfo ./ext/standard/info.c if (sapi_module.pretty_name) { php_info_print_table_row(2, "Server API", sapi_module.pretty_name ); diff -up ./ext/standard/tests/general_functions/phpinfo.phpt.phpinfo ./ext/standard/tests/general_functions/phpinfo.phpt ---- ./ext/standard/tests/general_functions/phpinfo.phpt.phpinfo 2020-07-21 10:49:31.000000000 +0200 -+++ ./ext/standard/tests/general_functions/phpinfo.phpt 2020-07-21 11:41:56.296633522 +0200 +--- ./ext/standard/tests/general_functions/phpinfo.phpt.phpinfo 2024-10-08 16:12:47.009579597 +0200 ++++ ./ext/standard/tests/general_functions/phpinfo.phpt 2024-10-08 16:12:52.273784836 +0200 @@ -17,7 +17,6 @@ PHP Version => %s System => %s @@ -30,15 +30,15 @@ diff -up ./ext/standard/tests/general_functions/phpinfo.phpt.phpinfo ./ext/stand Server API => Command Line Interface Virtual Directory Support => %s Configuration File (php.ini) Path => %s -diff -up ./sapi/cli/php_cli.c.phpinfo ./sapi/cli/php_cli.c ---- ./sapi/cli/php_cli.c.phpinfo 2020-07-21 11:43:38.812475300 +0200 -+++ ./sapi/cli/php_cli.c 2020-07-21 11:43:45.783464540 +0200 -@@ -645,7 +645,7 @@ static int do_cli(int argc, char **argv) - "NTS" +diff -up ./main/main.c.phpinfo ./main/main.c +--- ./main/main.c.phpinfo 2024-10-08 15:57:40.000000000 +0200 ++++ ./main/main.c 2024-10-08 16:10:11.331510049 +0200 +@@ -118,7 +118,7 @@ PHPAPI char *php_get_version(sapi_module + "NTS" #endif #ifdef PHP_BUILD_COMPILER -- " " PHP_BUILD_COMPILER -+ " gcc" +- " " PHP_BUILD_COMPILER ++ " gcc" #endif #ifdef PHP_BUILD_ARCH - " " PHP_BUILD_ARCH + " " PHP_BUILD_ARCH diff --git a/php-7.4.0-phpize.patch b/php-8.4.0-phpize.patch similarity index 90% rename from php-7.4.0-phpize.patch rename to php-8.4.0-phpize.patch index fb99f3e619ac6053bb58922f1d786dc756658aeb..76c3ed5879370f0f68e58dbb675b3b0631b75aa0 100644 --- a/php-7.4.0-phpize.patch +++ b/php-8.4.0-phpize.patch @@ -1,7 +1,7 @@ diff -up ./scripts/phpize.in.headers ./scripts/phpize.in --- ./scripts/phpize.in.headers 2019-07-23 10:05:11.000000000 +0200 +++ ./scripts/phpize.in 2019-07-23 10:18:13.648098089 +0200 -@@ -165,6 +165,15 @@ phpize_autotools() +@@ -166,6 +166,15 @@ phpize_autotools() $PHP_AUTOHEADER || exit 1 } @@ -17,7 +17,7 @@ diff -up ./scripts/phpize.in.headers ./scripts/phpize.in # Main script case "$1" in -@@ -183,12 +192,15 @@ case "$1" in +@@ -184,12 +193,15 @@ case "$1" in # Version --version|-v) diff --git a/php-8.3.11-systzdata-v24.patch b/php-8.4.0-systzdata-v24.patch similarity index 92% rename from php-8.3.11-systzdata-v24.patch rename to php-8.4.0-systzdata-v24.patch index 90bdc78b0b6f009171dfe6a0c7376ff209dba039..6176a8bbb4c778f6eb58adcc1bed0aafca75ee20 100644 --- a/php-8.3.11-systzdata-v24.patch +++ b/php-8.4.0-systzdata-v24.patch @@ -5,7 +5,7 @@ Add support for use of the system timezone database, rather than embedding a copy. Discussed upstream but was not desired. History: -f24: add internal UTC if tzdata is missing +r24: add internal UTC if tzdata is missing r23: fix possible buffer overflow r22: retrieve tzdata version from /usr/share/zoneinfo/tzdata.zi r21: adapt for timelib 2021.03 (in 8.1.0) @@ -36,17 +36,15 @@ r2: add filesystem trawl to set up name alias index r1: initial revision -diff --git a/ext/date/config0.m4 b/ext/date/config0.m4 -index 6b803bf33e..53c3cdb3f4 100644 ---- a/ext/date/config0.m4 -+++ b/ext/date/config0.m4 -@@ -4,6 +4,19 @@ - dnl Check for strtoll, atoll - AC_CHECK_FUNCS(strtoll atoll) +diff -up ./ext/date/config0.m4.systzdata ./ext/date/config0.m4 +--- ./ext/date/config0.m4.systzdata 2024-07-03 16:21:20.240786848 +0200 ++++ ./ext/date/config0.m4 2024-07-03 16:25:14.838995464 +0200 +@@ -8,6 +8,18 @@ + [PHP_DATE_CFLAGS="$PHP_DATE_CFLAGS -Wno-implicit-fallthrough"],, + [-Werror]) +PHP_ARG_WITH(system-tzdata, for use of system timezone data, -+[ --with-system-tzdata[=DIR] to specify use of system timezone data], -+no, no) ++ [AS_HELP_STRING([--with-system-tzdata[=DIR]],[to specify use of system timezone data])], no, no) + +if test "$PHP_SYSTEM_TZDATA" != "no"; then + AC_DEFINE(HAVE_SYSTEM_TZDATA, 1, [Define if system timezone data is used]) @@ -57,13 +55,12 @@ index 6b803bf33e..53c3cdb3f4 100644 + fi +fi + - AX_CHECK_COMPILE_FLAG([-Wno-implicit-fallthrough], - [PHP_DATE_CFLAGS="$PHP_DATE_CFLAGS -Wno-implicit-fallthrough"],, - [-Werror]) -diff --git a/ext/date/lib/parse_tz.c b/ext/date/lib/parse_tz.c -index c7f93580d7..ec196a98b6 100644 ---- a/ext/date/lib/parse_tz.c -+++ b/ext/date/lib/parse_tz.c + PHP_DATE_CFLAGS="$PHP_DATE_CFLAGS -I@ext_builddir@/lib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DHAVE_TIMELIB_CONFIG_H=1" + timelib_sources="lib/astro.c lib/dow.c lib/parse_date.c lib/parse_tz.c lib/parse_posix.c + lib/timelib.c lib/tm2unixtime.c lib/unixtime2tm.c lib/parse_iso_intervals.c lib/interval.c" +diff -up ./ext/date/lib/parse_tz.c.systzdata ./ext/date/lib/parse_tz.c +--- ./ext/date/lib/parse_tz.c.systzdata 2024-07-02 15:43:13.000000000 +0200 ++++ ./ext/date/lib/parse_tz.c 2024-07-03 16:21:20.240786848 +0200 @@ -26,9 +26,33 @@ #include "timelib.h" #include "timelib_private.h" @@ -98,7 +95,7 @@ index c7f93580d7..ec196a98b6 100644 #if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__)) # if defined(__LITTLE_ENDIAN__) -@@ -95,6 +119,11 @@ static int read_php_preamble(const unsigned char **tzf, timelib_tzinfo *tz) +@@ -95,6 +119,11 @@ static int read_php_preamble(const unsig { uint32_t version; @@ -110,7 +107,7 @@ index c7f93580d7..ec196a98b6 100644 /* read ID */ version = (*tzf)[3] - '0'; *tzf += 4; -@@ -577,7 +606,475 @@ void timelib_dump_tzinfo(timelib_tzinfo *tz) +@@ -577,7 +606,475 @@ void timelib_dump_tzinfo(timelib_tzinfo } } @@ -587,7 +584,7 @@ index c7f93580d7..ec196a98b6 100644 { int left = 0, right = tzdb->index_size - 1; -@@ -603,9 +1100,49 @@ static int seek_to_tz_position(const unsigned char **tzf, const char *timezone, +@@ -603,9 +1100,49 @@ static int seek_to_tz_position(const uns return 0; } @@ -637,7 +634,7 @@ index c7f93580d7..ec196a98b6 100644 } const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_tzdb *tzdb, int *count) -@@ -617,7 +1154,32 @@ const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_ +@@ -617,7 +1154,32 @@ const timelib_tzdb_index_entry *timelib_ int timelib_timezone_id_is_valid(const char *timezone, const timelib_tzdb *tzdb) { const unsigned char *tzf; @@ -671,7 +668,7 @@ index c7f93580d7..ec196a98b6 100644 } static int skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz) -@@ -662,6 +1224,8 @@ static timelib_tzinfo* timelib_tzinfo_ctor(const char *name) +@@ -662,6 +1224,8 @@ static timelib_tzinfo* timelib_tzinfo_ct timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *tzdb, int *error_code) { const unsigned char *tzf; @@ -680,7 +677,7 @@ index c7f93580d7..ec196a98b6 100644 timelib_tzinfo *tmp; int version; int transitions_result, types_result; -@@ -669,7 +1233,7 @@ timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *t +@@ -669,7 +1233,7 @@ timelib_tzinfo *timelib_parse_tzfile(con *error_code = TIMELIB_ERROR_NO_ERROR; @@ -689,7 +686,7 @@ index c7f93580d7..ec196a98b6 100644 tmp = timelib_tzinfo_ctor(timezone); version = read_preamble(&tzf, tmp, &type); -@@ -712,11 +1276,38 @@ timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *t +@@ -712,11 +1276,38 @@ timelib_tzinfo *timelib_parse_tzfile(con return NULL; } @@ -728,11 +725,10 @@ index c7f93580d7..ec196a98b6 100644 } else { *error_code = TIMELIB_ERROR_NO_SUCH_TIMEZONE; tmp = NULL; -diff --git a/ext/date/php_date.c b/ext/date/php_date.c -index 48c82bf7ec..443299c089 100644 ---- a/ext/date/php_date.c -+++ b/ext/date/php_date.c -@@ -490,7 +490,11 @@ PHP_MINFO_FUNCTION(date) +diff -up ./ext/date/php_date.c.systzdata ./ext/date/php_date.c +--- ./ext/date/php_date.c.systzdata 2024-07-02 15:43:13.000000000 +0200 ++++ ./ext/date/php_date.c 2024-07-03 16:21:20.240786848 +0200 +@@ -487,7 +487,11 @@ PHP_MINFO_FUNCTION(date) php_info_print_table_row(2, "date/time support", "enabled"); php_info_print_table_row(2, "timelib version", TIMELIB_ASCII_VERSION); php_info_print_table_row(2, "\"Olson\" Timezone Database Version", tzdb->version); diff --git a/php-8.3.19.tar.xz b/php-8.4.5.tar.xz similarity index 32% rename from php-8.3.19.tar.xz rename to php-8.4.5.tar.xz index edee0bb6d172f5f21cb7ba67e54e9a10371947b1..d99428838f30913c6a8f010663427206e2ce50f2 100644 --- a/php-8.3.19.tar.xz +++ b/php-8.4.5.tar.xz @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:976e4077dd25bec96b5dfe8938052d243bbd838f95368a204896eff12756545f -size 12560852 +oid sha256:0d3270bbce4d9ec617befce52458b763fd461d475f1fe2ed878bb8573faed327 +size 13604056 diff --git a/php-keyring.gpg b/php-keyring.gpg deleted file mode 100644 index ff1867433d5a57292e195936c4e04e7847f03633..0000000000000000000000000000000000000000 --- a/php-keyring.gpg +++ /dev/null @@ -1,597 +0,0 @@ ------BEGIN PGP PUBLIC KEY BLOCK----- - -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 -qBpjMusb8Bc3N2QMta8V3ReUAqXbPrr1l5K6TSaURmSeHkfDuNizgyRKYERpOCwP -o72bp1tILSTiCpgBn19iEpNvGqwkddvXcWoRxynn1EvEHNs0yuvyPwaf2TFXPzQt -6LOibq0CQ/yn3+GpoTWgWEVg/jZ+30forWdxzwR9sn9J8y9HIMBrd+xm0Fxqkbx3 -MJqAAWPZt1mVQtSJnTkuk98zK1AuAE8g/6rVLOjbscldtgtYy0bRqrtmDHQMPrNR -ulekN2NEq5UasNDW+FINIDMCmXVQlPttqhplSeOA+30q+wMiGZkqwuIuiKBfSNKX -KWWHSCJoDgZ5kpsDiIp+f5NDqoN4GVmQJ9mFeqqVZ90Y1c/xpBZJpd9U53g4vmmS -Ur5sqW7045Gh/8wC8CqXEiHVWWJZpVn1qaxvFGN1nN1yaus0WIxvWAHYGS8x/uwe -8q/1UfMAEQEAAbQhU2VyZ2V5IFBhbnRlbGVldiA8c2VyZ2V5QHBocC5uZXQ+iQJX -BBMBCABBAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAhkBFiEE5gkT5N8gmQfY -4w2WZZqXyc8qeVoFAmJrslYFCRDtclwACgkQZZqXyc8qeVqENhAAglRrXTkxTEFh -e3KZwGzRUhszL/XX3xO2jmnFWoRHETLruTuTjYWTJSsHl41yY5lyYGuF8WYn3KKZ -6CRIogJnenm9aHXh361wGqyooPx6gh17UxQXNAAxICHsPRKx4ygoqYN7gQMb0fJ3 -Qlf8Q5gCA3WRjO7oZJWL7ZOvI4Myt7c2Mg83rPnkCoY0HV3x4KdjKlfmnrrsvHLB -VryVfwyQ01xTHg8AJvbQfHzKh2QzpRdY6ZfhW10tzXTfznnvC7Y2vseYkzDCOZVZ -px6Xpsetlvjtsgh1HXeE18SOmn76Sl5xw47F2aGaC1NYmMFbQO1xiGUws381jLxb -F7V6ftxrHzhRWbXl2JOF4KBft5vlUVA13JMnd9x3NlmQyHuDymFPko8VfRp/y7av -V88D2/VIC6IurhUZyaPa+MwEynlOHtJivZmcsuTXZee7R17BHfq9kmoodJL9G19y -8ViPGm+iVqTghVmPt51VFyauWh9xrbHb/11KpPjO+teiyLHQ2Wy2e/PUKxPZjhLw -A57PcCI7fFxXHf/+ZO/zjP+X/xitPqfXb+dbkp7sqrV9tUrRuf2PosbtDLiu4yto -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 -yalYwuj7Yip5XJGttg== -=jLhZ ------END PGP PUBLIC KEY BLOCK----- diff --git a/php.conf b/php.conf index 639652b42fb579e5845fa95d9cc505bbcb9156e2..36496ef5bbbe96fc84be47f26bfb020fd15ec248 100644 --- a/php.conf +++ b/php.conf @@ -2,7 +2,14 @@ # The following lines prevent .user.ini files from being viewed by Web clients. # - Require all denied + + Require all denied + + + Order allow,deny + Deny from all + Satisfy All + # @@ -16,24 +23,7 @@ AddType text/html .php # DirectoryIndex index.php -# -# Redirect to local php-fpm (no mod_php in default configuration) -# - - # Enable http authorization headers - SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 - - - SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" - - - -# -# mod_php is deprecated as FPM is now used by default with httpd in event mode -# mod_php is only used when explicitly enabled or httpd switch to prefork mode -# # mod_php options -# # # Cause the PHP interpreter to handle files with a .php extension. @@ -60,3 +50,17 @@ DirectoryIndex index.php #php_value opcache.file_cache "/var/lib/php/opcache" + +# Redirect to local php-fpm if mod_php (5 or 7) is not available + + + + # Enable http authorization headers + SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 + + + SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" + + + + diff --git a/php.ini b/php.ini index 52e1e49933562efbe54747dc5339ec9073429940..cdd2c0b5e23574a8009ba58bd1a5108b59b614fa 100644 --- a/php.ini +++ b/php.ini @@ -75,7 +75,7 @@ ; php.ini-production contains settings which hold security, performance and ; best practices at its core. But please be aware, these settings may break -; compatibility with older or less security conscience applications. We +; compatibility with older or less security-conscious applications. We ; recommending using the production ini in production and testing environments. ; php.ini-development is very similar to its production variant, except it is @@ -139,11 +139,6 @@ ; Development Value: 1000 ; Production Value: 1000 -; session.sid_bits_per_character -; Default Value: 4 -; Development Value: 5 -; Production Value: 5 - ; short_open_tag ; Default Value: On ; Development Value: Off @@ -154,6 +149,11 @@ ; Development Value: "GPCS" ; Production Value: "GPCS" +; zend.assertions +; Default Value: 1 +; Development Value: 1 +; Production Value: -1 + ; zend.exception_ignore_args ; Default Value: Off ; Development Value: Off @@ -425,6 +425,11 @@ max_input_time = 60 ; How many GET/POST/COOKIE input variables may be accepted ;max_input_vars = 1000 +; How many multipart body parts (combined input variable and file uploads) may +; be accepted. +; Default Value: -1 (Sum of max_input_vars and max_file_uploads) +;max_multipart_body_parts = 1500 + ; Maximum amount of memory a script may consume ; https://php.net/memory-limit memory_limit = 128M @@ -1040,6 +1045,10 @@ sendmail_path = /usr/sbin/sendmail -t -i ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename mail.add_x_header = Off +; Use mixed LF and CRLF line separators to keep compatibility with some +; RFC 2822 non conformant MTA. +mail.mixed_lf_and_crlf = Off + ; The path to a log file that will log all mail() calls. Log entries include ; the full path of the script, line number, To address and headers. ;mail.log = @@ -1137,9 +1146,6 @@ mysqli.default_user = ; https://php.net/mysqli.default-pw mysqli.default_pw = -; Allow or prevent reconnect -mysqli.reconnect = Off - ; If this option is enabled, closing a persistent connection will rollback ; any pending transactions of this connection, before it is put back ; into the persistent connection pool. @@ -1371,15 +1377,6 @@ session.cache_expire = 180 ; https://php.net/session.use-trans-sid session.use_trans_sid = 0 -; Set session ID character length. This value could be between 22 to 256. -; Shorter length than default is supported only for compatibility reason. -; Users should use 32 or more chars. -; https://php.net/session.sid-length -; Default Value: 32 -; Development Value: 26 -; Production Value: 26 -session.sid_length = 26 - ; The URL rewriter will look for URLs in a defined set of HTML tags. ;
is special; if you include them here, the rewriter will ; add a hidden field with the info which is otherwise appended @@ -1405,18 +1402,6 @@ session.trans_sid_tags = "a=href,area=href,frame=src,form=" ; Production Value: "" ;session.trans_sid_hosts="" -; Define how many bits are stored in each character when converting -; the binary hash data to something readable. -; Possible values: -; 4 (4 bits: 0-9, a-f) -; 5 (5 bits: 0-9, a-v) -; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") -; Default Value: 4 -; Development Value: 5 -; Production Value: 5 -; https://php.net/session.hash-bits-per-character -session.sid_bits_per_character = 5 - ; Enable upload progress tracking in $_SESSION ; Default Value: On ; Development Value: On @@ -1471,33 +1456,14 @@ session.sid_bits_per_character = 5 ; -1: Do not compile at all ; 0: Jump over assertion at run-time ; 1: Execute assertions -; Changing from or to a negative value is only possible in php.ini! (For turning assertions on and off at run-time, see assert.active, when zend.assertions = 1) +; Changing from or to a negative value is only possible in php.ini! +; (For turning assertions on and off at run-time, toggle zend.assertions between the values 1 and 0) ; Default Value: 1 ; Development Value: 1 ; Production Value: -1 ; https://php.net/zend.assertions zend.assertions = -1 -; Assert(expr); active by default. -; https://php.net/assert.active -;assert.active = On - -; Throw an AssertionError on failed assertions -; https://php.net/assert.exception -;assert.exception = On - -; Issue a PHP warning for each failed assertion. (Overridden by assert.exception if active) -; https://php.net/assert.warning -;assert.warning = On - -; Don't bail out by default. -; https://php.net/assert.bail -;assert.bail = Off - -; User-function to be called if an assertion fails. -; https://php.net/assert.callback -;assert.callback = 0 - [mbstring] ; language for internal character representation. ; This affects mb_send_mail() and mbstring.detect_order. diff --git a/php.modconf b/php.modconf index e169f4a60f0b85f022fd46aa1dc104d32f25eb00..6f678e6512a700afef24ed5b8d2b970fdcf8e874 100644 --- a/php.modconf +++ b/php.modconf @@ -11,3 +11,4 @@ + diff --git a/php.spec b/php.spec index d30d6e79f2d01921c4b57226438f1c82e764cf13..55b5528d94b8f6d55287a91a2a56b78b18063352 100644 --- a/php.spec +++ b/php.spec @@ -1,86 +1,163 @@ -%global apiver 20230831 -%global zendver 20230831 -%global pdover 20170320 -%undefine _strict_symbol_defs_build +# API/ABI check +%global apiver 20240924 +%global zendver 20240924 +%global pdover 20240423 +# Extension version +%global fileinfover 1.0.5 +%global zipver 1.22.5 + +# Adds -z now to the linker flags %global _hardened_build 1 -%global embed_version 8.3 + +# version used for php embedded library soname +%global embed_version 8.4 + %global mysql_sock %(mysql_config --socket 2>/dev/null || echo /var/lib/mysql/mysql.sock) -%{!?runselftest: %global runselftest 1} + +# Build for LiteSpeed Web Server (LSAPI), you can disable using --without tests +%bcond_without lsws + +# Regression tests take a long time, you can skip them using --without tests +%bcond_without tests + +# Use the arch-specific mysql_config binary to avoid mismatch with the +# arch detection heuristic used by bindir/mysql_config. %global mysql_config %{_libdir}/mysql/mysql_config +%bcond_without libpcre -%{!?_httpd_mmn: %{expand: %%global _httpd_mmn %%(cat %{_includedir}/httpd/.mmn 2>/dev/null || echo 0-0)}} +%bcond_with qdbm -%global with_zts 0 -%global with_firebird 0 -%global with_freetds 0 -%global with_sodium 1 -%global with_pspell 0 -%global with_tidy 1 -%global with_db4 0 -%global with_qdbm 0 -%global with_imap 0 -%global with_modphp 1 -%global with_lmdb 1 -%global with_sodium 1 -%global upver 8.3.19 - - -Name: php -Version: %{upver} -Release: 1 -Summary: PHP scripting language for creating dynamic web sites -License: PHP-3.01 AND Zend-2.0 AND BSD-2-Clause AND MIT AND Apache-1.0 AND NCSA AND BSL-1.0 -URL: https://www.php.net/ -Source0: https://www.php.net/distributions/php-%{upver}.tar.xz -Source1: php.conf -Source2: php.ini -Source3: macros.php -Source4: php-fpm.conf -Source5: php-fpm-www.conf -Source6: php-fpm.service -Source7: php-fpm.logrotate -Source8: php.modconf -Source9: php-fpm.wants -Source10: nginx-fpm.conf -Source11: 10-opcache.ini -Source12: opcache-default.blacklist -Source13: 20-ffi.ini -Source14: nginx-php.conf -Source15: https://www.php.net/distributions/php-keyring.gpg - - -Patch0: php-7.4.0-httpd.patch -Patch1: php-7.2.0-includedir.patch -Patch2: php-8.0.0-embed.patch -Patch3: php-8.1.0-libdb.patch - -Patch4: php-8.3.3-parser.patch -Patch5: php-8.3.11-systzdata-v24.patch - -Patch6: php-7.4.0-phpize.patch -Patch7: php-7.4.0-ldap_r.patch -Patch8: php-8.3.13-phpinfo.patch -Patch9: php-8.3.0-openssl-ec-param.patch -Patch10: 0001-add-sw_64-support.patch +%bcond_without libxcrypt +# Build firebird extensions, you can disable using --without firebird +%bcond_with firebird + +# Build ZTS extension or only NTS using --without zts +%bcond_with zts + +# Debug build, using --with debug +%bcond_with debug + +# build with system tzdata +%bcond_without tzdata + +# /usr/sbin/a# build with libiodbc instead of unixODBC +%bcond_with iodbc + +# OpenSSL2 with argon2 +%bcond_with openssl32 + +# /usr/sbin/apsx with httpd < 2.4 and defined as /usr/bin/apxs with httpd >= 2.4 +%{!?_httpd_apxs: %{expand: %%global _httpd_apxs %%{_sbindir}/apxs}} +%{!?_httpd_mmn: %{expand: %%global _httpd_mmn %%(cat %{_includedir}/httpd/.mmn 2>/dev/null || echo 0-0)}} +%{!?_httpd_confdir: %{expand: %%global _httpd_confdir %%{_sysconfdir}/httpd/conf.d}} +# /etc/httpd/conf.d with httpd < 2.4 and defined as /etc/httpd/conf.modules.d with httpd >= 2.4 +%{!?_httpd_modconfdir: %{expand: %%global _httpd_modconfdir %%{_sysconfdir}/httpd/conf.d}} +%{!?_httpd_moddir: %{expand: %%global _httpd_moddir %%{_libdir}/httpd/modules}} +%{!?_httpd_contentdir: %{expand: %%global _httpd_contentdir /var/www}} + +%bcond_without dtrace +%bcond_without libgd +%bcond_with zip + +%global upver 8.4.5 + +Summary: PHP scripting language for creating dynamic web sites +Name: php +Version: %{upver} +Release: 1 +# All files licensed under PHP version 3.01, except +# Zend is licensed under Zend +# TSRM is licensed under BSD +# main/snprintf.c, main/spprintf.c and main/rfc1867.c are ASL 1.0 +# ext/date/lib is MIT +# Zend/zend_sort is NCSA +# Zend/asm is Boost +License: PHP-3.01 AND Zend-2.0 AND BSD-2-Clause AND MIT AND Apache-1.0 AND NCSA AND BSL-1.0 +URL: https://www.php.net/ + +Source0: https://www.php.net/distributions/php-%{upver}%{?rcver}.tar.xz +Source1: php.conf +Source2: php.ini +Source3: macros.php +Source4: php-fpm.conf +Source5: php-fpm-www.conf +Source6: php-fpm.service +Source7: php-fpm.logrotate +Source9: php.modconf +Source12: php-fpm.wants +Source13: nginx-fpm.conf +Source14: nginx-php.conf +# Configuration files for some extensions +Source50: 10-opcache.ini +Source51: opcache-default.blacklist +Source53: 20-ffi.ini + +# Build fixes +Patch1: php-8.4.0-httpd.patch +Patch5: php-8.4.0-includedir.patch +Patch6: php-8.4.0-embed.patch +Patch8: php-8.4.0-libdb.patch +Patch9: 0001-add-sw_64-support.patch + +# Functional changes +# Use system nikic/php-parser +Patch41: php-8.3.3-parser.patch +# use system tzdata +Patch42: php-8.4.0-systzdata-v24.patch +# See http://bugs.php.net/53436 +# + display PHP version backported from 8.4 +Patch43: php-8.4.0-phpize.patch +# Use -lldap_r for OpenLDAP +Patch45: php-8.4.0-ldap_r.patch +# Ignore unsupported "threads" option on password_hash +Patch46: php-8.0.7-argon2.patch +# drop "Configure command" from phpinfo output +# and only use gcc (instead of full version) +Patch47: php-8.4.0-phpinfo.patch + +# RC Patch + +# Upstream fixes (100+) + +# Security fixes (200+) + +# Fixes for tests (300+) +# Factory is droped from system tzdata +Patch300: php-7.4.0-datetests.patch + +# WIP BuildRequires: bzip2-devel -BuildRequires: pkgconfig(libcurl) >= 7.29.0 -BuildRequires: httpd-devel >= 2.0.46-1 +BuildRequires: pkgconfig(libcurl) >= 7.29.0 +BuildRequires: httpd-devel >= 2.0.46 BuildRequires: pam-devel +# to ensure we are using httpd with filesystem feature (see #1081453) BuildRequires: httpd-filesystem +# to ensure we are using nginx with filesystem feature (see #1142298) BuildRequires: nginx-filesystem BuildRequires: libstdc++-devel +%if %{with openssl32} +BuildRequires: pkgconfig(openssl) >= 3.2 +%else +# no pkgconfig to avoid compat-openssl10/compat-openssl11 BuildRequires: openssl-devel >= 1.0.2 +%endif BuildRequires: pkgconfig(sqlite3) >= 3.7.4 BuildRequires: pkgconfig(zlib) >= 1.2.0.4 BuildRequires: smtpdaemon BuildRequires: pkgconfig(libedit) +%if %{with libpcre} BuildRequires: pkgconfig(libpcre2-8) >= 10.30 +%else +Provides: bundled(pcre2) = 10.40 +%endif +%if %{with libxcrypt} BuildRequires: pkgconfig(libxcrypt) +%endif BuildRequires: bzip2 -BuildRequires: perl-interpreter +BuildRequires: perl BuildRequires: autoconf BuildRequires: automake BuildRequires: make @@ -88,33 +165,37 @@ BuildRequires: gcc BuildRequires: gcc-c++ BuildRequires: libtool BuildRequires: libtool-ltdl-devel +%if %{with dtrace} BuildRequires: systemtap-sdt-devel -BuildRequires: %{_bindir}/ps +%endif +# used for tests +BuildRequires: /usr/bin/ps +%if %{with tzdata} BuildRequires: tzdata +%endif -%if %{with_zts} +%if %{with zts} +Obsoletes: php-zts < 5.3.7 Provides: php-zts = %{version}-%{release} Provides: php-zts%{?_isa} = %{version}-%{release} %endif -%if %{with_modphp} Requires: httpd-mmn = %{_httpd_mmn} -Provides: mod_php = %{version}-%{release} +Provides: mod_php = %{version}-%{release} +Requires: php-common%{?_isa} = %{version}-%{release} +# To ensure correct /var/lib/php/session ownership: Requires(pre): httpd-filesystem +# php engine for Apache httpd webserver Provides: php(httpd) -Provides: deprecated() -%else -Recommends: httpd -%endif -Requires: php-common%{?_isa} = %{version}-%{release} +# For backwards-compatibility, require php-cli for the time being: Recommends: php-cli%{?_isa} = %{version}-%{release} +# httpd have threaded MPM by default Recommends: php-fpm%{?_isa} = %{version}-%{release} +# as "php" is now mostly a meta-package, commonly used extensions Recommends: php-mbstring%{?_isa} = %{version}-%{release} Recommends: php-opcache%{?_isa} = %{version}-%{release} Recommends: php-pdo%{?_isa} = %{version}-%{release} -%if %{with_sodium} Recommends: php-sodium%{?_isa} = %{version}-%{release} -%endif Recommends: php-xml%{?_isa} = %{version}-%{release} @@ -125,15 +206,14 @@ offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled webpage with PHP is fairly simple. The most common use of PHP coding is probably as a replacement for CGI scripts. -%if %{with_modphp} + The php package contains the module (often referred to as mod_php) -which adds support for the PHP language to Apache HTTP Server when -running in prefork mode. This module is deprecated. -%endif +which adds support for the PHP language to Apache HTTP Server. %package cli Summary: Command-line interface for PHP -License: PHP-3.01 AND Zend-2.0 AND BSD-2-Clause AND MIT AND Apache-1.0 AND NCSA AND PostgreSQL +# sapi/cli/ps_title.c is PostgreSQL +License: PHP-3.01 AND Zend-2.0 AND BSD-2-Clause AND MIT AND Apache-1.0 AND NCSA AND PostgreSQL Requires: php-common%{?_isa} = %{version}-%{release} Provides: php-cgi = %{version}-%{release}, php-cgi%{?_isa} = %{version}-%{release} Provides: php-pcntl, php-pcntl%{?_isa} @@ -159,22 +239,56 @@ BuildRequires: pkgconfig(libsystemd) >= 209 BuildRequires: pkgconfig(libselinux) Requires: php-common%{?_isa} = %{version}-%{release} %{?systemd_requires} +# This is actually needed for the %%triggerun script but Requires(triggerun) +# is not valid. We can use %%post because this particular %%triggerun script +# should fire just after this package is installed. +Requires(post): systemd-sysv +# To ensure correct /var/lib/php/session ownership: Requires(pre): httpd-filesystem +# For php.conf in /etc/httpd/conf.d +# and version 2.4.10 for proxy support in SetHandler Requires: httpd-filesystem >= 2.4.10 +# php engine for Apache httpd webserver Provides: php(httpd) -Requires: nginx-filesystem +# for /etc/nginx ownership +# Temporarily not mandatory to allow nginx for nginx repo +Recommends: nginx-filesystem %description fpm PHP-FPM (FastCGI Process Manager) is an alternative PHP FastCGI implementation with some additional features useful for sites of any size, especially busier sites. +%if %{with lsws} +%package litespeed +Summary: LiteSpeed Web Server PHP support +Requires: php-common%{?_isa} = %{version}-%{release} + +%description litespeed +The php-litespeed package provides the %{_bindir}/lsphp command +used by the LiteSpeed Web Server (LSAPI enabled PHP). +%endif + %package common Summary: Common files for PHP +# All files licensed under PHP version 3.01, except +# fileinfo is licensed under PHP version 3.0 +# regex, libmagic are licensed under BSD License: PHP-3.01 AND BSD-2-Clause + +%if %{with tzdata} +Requires: tzdata +%endif +%if %{with libpcre} +%global pcre2_buildver %(pkg-config --silence-errors --modversion libpcre2-8 2>/dev/null || echo 10.30) +Requires: pcre2%{?_isa} >= %{pcre2_buildver} +%endif + +# ABI/API check - Arch specific Provides: php(api) = %{apiver}-%{__isa_bits} Provides: php(zend-abi) = %{zendver}-%{__isa_bits} Provides: php(language) = %{version}, php(language)%{?_isa} = %{version} +# Provides for all builtin/shared modules: Provides: php-bz2, php-bz2%{?_isa} Provides: php-calendar, php-calendar%{?_isa} Provides: php-core = %{version}, php-core%{?_isa} = %{version} @@ -184,7 +298,7 @@ Provides: php-date, php-date%{?_isa} Provides: bundled(timelib) Provides: php-exif, php-exif%{?_isa} Provides: php-fileinfo, php-fileinfo%{?_isa} -Provides: bundled(libmagic) = 5.29 +Provides: bundled(libmagic) = 5.43 Provides: php-filter, php-filter%{?_isa} Provides: php-ftp, php-ftp%{?_isa} Provides: php-gettext, php-gettext%{?_isa} @@ -192,7 +306,9 @@ Provides: php-hash, php-hash%{?_isa} Provides: php-mhash = %{version}, php-mhash%{?_isa} = %{version} Provides: php-iconv, php-iconv%{?_isa} Obsoletes: php-json < 8 -Provides: php-json = %{version}, php-json%{?_isa} = %{version} +Obsoletes: php-pecl-json < 8 +Obsoletes: php-pecl-jsonc < 8 +Provides: php-json = %{upver}, php-json%{?_isa} = %{upver} Provides: php-libxml, php-libxml%{?_isa} Provides: php-openssl, php-openssl%{?_isa} Provides: php-phar, php-phar%{?_isa} @@ -206,6 +322,12 @@ Provides: php-standard = %{version}, php-standard%{?_isa} = %{version} Provides: php-tokenizer, php-tokenizer%{?_isa} Provides: php-zlib, php-zlib%{?_isa} +Obsoletes: php-pecl-phar < 1.2.4 +Obsoletes: php-pecl-Fileinfo < 1.0.5 +Provides: php-pecl-Fileinfo = %{fileinfover}, php-pecl-Fileinfo%{?_isa} = %{fileinfover} +Provides: php-pecl(Fileinfo) = %{fileinfover}, php-pecl(Fileinfo)%{?_isa} = %{fileinfover} +Obsoletes: php-mhash < 5.3.0 + %description common The php-common package contains files used by both the php package and the php-cli package. @@ -213,23 +335,28 @@ package and the php-cli package. %package devel Summary: Files needed for building PHP extensions Requires: php-cli%{?_isa} = %{version}-%{release} +# always needed to build extension Requires: autoconf Requires: automake Requires: make Requires: gcc Requires: gcc-c++ Requires: libtool +# see "php-config --libs" Requires: krb5-devel%{?_isa} Requires: libxml2-devel%{?_isa} Requires: openssl-devel%{?_isa} >= 1.0.2 +%if %{with libpcre} Requires: pcre2-devel%{?_isa} +%endif Requires: zlib-devel%{?_isa} -%if %{with_zts} +Obsoletes: php-pecl-json-devel < %{version} +Obsoletes: php-pecl-jsonc-devel < %{version} +%if %{with zts} Provides: php-zts-devel = %{version}-%{release} Provides: php-zts-devel%{?_isa} = %{version}-%{release} %endif -Recommends: php-nikic-php-parser4 >= 4.15.1 - +Recommends: php-nikic-php-parser5 >= 5.0.0 %description devel The php-devel package contains the files needed for building PHP @@ -239,7 +366,9 @@ need to install this package. %package opcache Summary: The Zend OPcache License: PHP-3.01 +BuildRequires: pkgconfig(capstone) >= 3.0 Requires: php-common%{?_isa} = %{version}-%{release} +Obsoletes: php-pecl-zendopcache < 7.0.6 Provides: php-pecl-zendopcache = %{version} Provides: php-pecl-zendopcache%{?_isa} = %{version} Provides: php-pecl(opcache) = %{version} @@ -252,25 +381,10 @@ bytecode in the shared memory. This eliminates the stages of reading code from the disk and compiling it on future access. In addition, it applies a few bytecode optimization patterns that make code execution faster. -%if %{with_imap} -%package imap -Summary: A module for PHP applications that use IMAP -License: PHP-3.01 -Requires: php-common%{?_isa} = %{version}-%{release} -BuildRequires: pkgconfig(krb5) -BuildRequires: pkgconfig(krb5-gssapi) -BuildRequires: openssl-devel >= 1.0.2 -BuildRequires: libc-client-devel - -%description imap -The php-imap module will add IMAP (Internet Message Access Protocol) -support to PHP. IMAP is a protocol for retrieving and uploading e-mail -messages on mail servers. PHP is an HTML-embedded scripting language. -%endif - %package ldap Summary: A module for PHP applications that use LDAP -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release} BuildRequires: pkgconfig(libsasl2) BuildRequires: openldap-devel @@ -284,8 +398,10 @@ language. %package pdo Summary: A database access abstraction module for PHP applications -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release} +# ABI/API check - Arch specific Provides: php-pdo-abi = %{pdover}-%{__isa_bits} Provides: php(pdo-abi) = %{pdover}-%{__isa_bits} Provides: php-sqlite3, php-sqlite3%{?_isa} @@ -299,12 +415,14 @@ databases. %package mysqlnd Summary: A module for PHP applications that use MySQL databases -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-pdo%{?_isa} = %{version}-%{release} Provides: php_database Provides: php-mysqli = %{version}-%{release} Provides: php-mysqli%{?_isa} = %{version}-%{release} Provides: php-pdo_mysql, php-pdo_mysql%{?_isa} +Obsoletes: php-mysql < %{version}-%{release} %description mysqlnd The php-mysqlnd package contains a dynamic shared object that will add @@ -317,13 +435,14 @@ This package use the MySQL Native Driver %package pgsql Summary: A PostgreSQL database module for PHP -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-pdo%{?_isa} = %{version}-%{release} Provides: php_database Provides: php-pdo_pgsql, php-pdo_pgsql%{?_isa} BuildRequires: krb5-devel BuildRequires: openssl-devel >= 1.0.2 -BuildRequires: libpq-devel +BuildRequires: postgresql-devel %description pgsql The php-pgsql package add PostgreSQL database support to PHP. @@ -335,7 +454,8 @@ php package. %package process Summary: Modules for PHP script using system process interfaces -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release} Provides: php-posix, php-posix%{?_isa} Provides: php-shmop, php-shmop%{?_isa} @@ -350,11 +470,17 @@ communication. %package odbc Summary: A module for PHP applications that use ODBC databases -License: PHP-3.01 +# All files licensed under PHP version 3.01, except +# pdo_odbc is licensed under PHP version 3.0 +License: PHP-3.01 Requires: php-pdo%{?_isa} = %{version}-%{release} Provides: php_database Provides: php-pdo_odbc, php-pdo_odbc%{?_isa} -BuildRequires: unixODBC-devel +%if %{with iodbc} +BuildRequires: pkgconfig(libiodbc) +%else +BuildRequires: pkgconfig(odbc) +%endif %description odbc The php-odbc package contains a dynamic shared object that will add @@ -364,10 +490,14 @@ data sources (which are often, but not always, databases). PHP is an HTML-embeddable scripting language. If you need ODBC support for PHP applications, you will need to install this package and the php package. +%if %{with iodbc} +Package build using libiodbc (instead of unixODBC). +%endif %package soap Summary: A module for PHP applications that use the SOAP protocol -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release} BuildRequires: pkgconfig(libxml-2.0) @@ -375,10 +505,11 @@ BuildRequires: pkgconfig(libxml-2.0) The php-soap package contains a dynamic shared object that will add support to PHP for using the SOAP web services protocol. -%if %{with_firebird} +%if %{with firebird} %package pdo-firebird Summary: PDO driver for Interbase/Firebird databases -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 BuildRequires: firebird-devel Requires: php-pdo%{?_isa} = %{version}-%{release} Provides: php_database @@ -391,7 +522,8 @@ Interbase/Firebird databases. %package snmp Summary: A module for PHP applications that query SNMP-managed devices -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release}, net-snmp BuildRequires: net-snmp-devel @@ -403,7 +535,8 @@ will need to install this package and the php package. %package xml Summary: A module for PHP applications which use XML -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release} Provides: php-dom, php-dom%{?_isa} Provides: php-domxml, php-domxml%{?_isa} @@ -422,8 +555,12 @@ and performing XSL transformations on XML documents. %package mbstring Summary: A module for PHP applications which need multi-byte string handling +# All files licensed under PHP version 3.01, except +# libmbfl is licensed under LGPLv2 +# onigurama is licensed under BSD +# ucgendat is licensed under OpenLDAP License: PHP-3.01 AND LGPL-2.1-only AND OLDAP-2.8 -BuildRequires: pkgconfig(oniguruma) >= 6.8 +BuildRequires: oniguruma-devel Provides: bundled(libmbfl) = 1.3.2 Requires: php-common%{?_isa} = %{version}-%{release} @@ -433,9 +570,27 @@ support for multi-byte string handling to PHP. %package gd Summary: A module for PHP applications for using the gd graphics library -License: PHP-3.01 +# All files licensed under PHP version 3.01 +%if %{with libgd} +License: PHP-3.01 +%else +# bundled libgd is licensed under MIT +License: PHP-3.01 and MIT +%endif Requires: php-common%{?_isa} = %{version}-%{release} -BuildRequires: pkgconfig(gdlib) >= 2.1.1 +%if %{with libgd} +BuildRequires: pkgconfig(gdlib) >= 2.3.3 +%else +# Required to build the bundled GD library +BuildRequires: pkgconfig(zlib) +BuildRequires: pkgconfig(libjpeg) +BuildRequires: pkgconfig(libpng) +BuildRequires: pkgconfig(freetype2) +BuildRequires: pkgconfig(xpm) +BuildRequires: pkgconfig(libwebp) +BuildRequires: pkgconfig(libavif) +Provides: bundled(gd) = 2.0.35 +%endif %description gd The php-gd package contains a dynamic shared object that will add @@ -443,8 +598,11 @@ support for using the gd graphics library to PHP. %package bcmath Summary: A module for PHP applications for using the bcmath library -License: PHP-3.01 AND LGPL-2.1-or-later +# All files licensed under PHP version 3.01, except +# libbcmath is licensed under LGPLv2+ +License: PHP-3.01 AND LGPL-2.1-or-later Requires: php-common%{?_isa} = %{version}-%{release} +Provides: bundled(libbcmath) %description bcmath The php-bcmath package contains a dynamic shared object that will add @@ -452,7 +610,8 @@ support for using the bcmath library to PHP. %package gmp Summary: A module for PHP applications for using the GNU MP library -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 BuildRequires: gmp-devel Requires: php-common%{?_isa} = %{version}-%{release} @@ -462,15 +621,12 @@ using the GNU MP library. %package dba Summary: A database abstraction layer module for PHP applications -License: PHP-3.01 -%if %{with_db4} +# All files licensed under PHP version 3.01 +License: PHP-3.01 BuildRequires: libdb-devel -%endif BuildRequires: tokyocabinet-devel -%if %{with_lmdb} BuildRequires: lmdb-devel -%endif -%if %{with_qdbm} +%if %{with qdbm} BuildRequires: qdbm-devel %endif Requires: php-common%{?_isa} = %{version}-%{release} @@ -479,35 +635,35 @@ Requires: php-common%{?_isa} = %{version}-%{release} The php-dba package contains a dynamic shared object that will add support for using the DBA database abstraction layer to PHP. -%if %{with_tidy} %package tidy Summary: Standard PHP module provides tidy library support -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release} BuildRequires: libtidy-devel %description tidy The php-tidy package contains a dynamic shared object that will add support for using the tidy library to PHP. -%endif -%if %{with_freetds} %package pdo-dblib Summary: PDO driver for Microsoft SQL Server and Sybase databases -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-pdo%{?_isa} = %{version}-%{release} -BuildRequires: freetds-devel +BuildRequires: freetds-devel >= 0.91 Provides: php-pdo_dblib, php-pdo_dblib%{?_isa} +Obsoletes: php-mssql < %{version}-%{release} %description pdo-dblib The php-pdo-dblib package contains a dynamic shared object that implements the PHP Data Objects (PDO) interface to enable access from PHP to Microsoft SQL Server and Sybase databases through the FreeTDS library. -%endif %package embedded Summary: PHP library for embedding in applications Requires: php-common%{?_isa} = %{version}-%{release} +# doing a real -devel package for just the .so symlink is a bit overkill Provides: php-embedded-devel = %{version}-%{release} Provides: php-embedded-devel%{?_isa} = %{version}-%{release} @@ -515,25 +671,14 @@ Provides: php-embedded-devel%{?_isa} = %{version}-%{release} The php-embedded package contains a library which can be embedded into applications to provide PHP scripting language support. -%if %{with_pspell} -%package pspell -Summary: A module for PHP applications for using pspell interfaces -License: PHP-3.01 -Requires: php-common%{?_isa} = %{version}-%{release} -BuildRequires: aspell-devel >= 0.50.0 - -%description pspell -The php-pspell package contains a dynamic shared object that will add -support for using the pspell library to PHP. -%endif - %package intl Summary: Internationalization extension for PHP applications -License: PHP-3.01 +# All files licensed under PHP version 3.01 +License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release} -BuildRequires: pkgconfig(icu-i18n) >= 50.1 -BuildRequires: pkgconfig(icu-io) >= 50.1 -BuildRequires: pkgconfig(icu-uc) >= 50.1 +BuildRequires: pkgconfig(icu-i18n) >= 74 +BuildRequires: pkgconfig(icu-io) >= 74 +BuildRequires: pkgconfig(icu-uc) >= 74 %description intl The php-intl package contains a dynamic shared object that will add @@ -541,7 +686,8 @@ support for using the ICU library to PHP. %package enchant Summary: Enchant spelling extension for PHP applications -License: PHP-3.01 +# All files licensed under PHP version 3.0 +License: PHP-3.01 Requires: php-common%{?_isa} = %{version}-%{release} BuildRequires: pkgconfig(enchant-2) @@ -549,11 +695,30 @@ BuildRequires: pkgconfig(enchant-2) The php-enchant package contains a dynamic shared object that will add support for using the enchant library to PHP. -%if %{with_sodium} +%if %{with zip} +%package zip +Summary: ZIP archive management extension for PHP +# All files licensed under PHP version 3.0.1 +License: PHP-3.01 +Requires: php-common%{?_isa} = %{version}-%{release} +Obsoletes: php-pecl-zip < %{zipver} +Provides: php-pecl(zip) = %{zipver} +Provides: php-pecl(zip)%{?_isa} = %{zipver} +Provides: php-pecl-zip = %{zipver} +Provides: php-pecl-zip%{?_isa} = %{zipver} +BuildRequires: pkgconfig(libzip) >= 0.11 + +%description zip +The php-zip package provides an extension that will add +support for ZIP archive management to PHP. +%endif + %package sodium Summary: Wrapper for the Sodium cryptographic library -License: PHP-3.01 -BuildRequires: pkgconfig(libsodium) >= 1.0.9 +# All files licensed under PHP version 3.0.1 +License: PHP-3.01 +# Minimal is 1.0.8, 1.0.14 is needed for argon2 password +BuildRequires: pkgconfig(libsodium) >= 1.0.14 Requires: php-common%{?_isa} = %{version}-%{release} Obsoletes: php-pecl-libsodium2 < 3 @@ -563,14 +728,14 @@ Provides: php-pecl(libsodium)%{?_isa} = %{version} %description sodium The php-sodium package provides a simple, low-level PHP extension for the libsodium cryptographic library. -%endif %package ffi Summary: Foreign Function Interface -License: PHP-3.01 -Group: System Environment/Libraries +# All files licensed under PHP version 3.0.1 +License: PHP-3.01 BuildRequires: pkgconfig(libffi) + Requires: php-common%{?_isa} = %{version}-%{release} %description ffi @@ -584,62 +749,128 @@ in pure PHP. %package_help %prep -%autosetup -n php-%{upver} -p1 +: Building %{name}-%{version}-%{release} +%if %{with lsws} +: With Litespeed SAPI +%endif +%if %{with firebird} +: With pdo_firebird extension +%endif +%if %{with zip} +: With Zip extension +%endif +%if %{with tests} +: Run Test suite +%endif +%if %{with libgd} +: Use System libgd +%else +: Use Bundled libgd +%endif +%if %{with libpcre} +: Use System libpcre +%else +: Use Bundled libpcre +%endif +%if %{with zts} +: Enable ZTS build +%endif +%if %{with debug} +: Enable Debug build +%endif +%if %{with dtrace} +: Enable Dtrace build +%endif +%autosetup -p1 -n php-%{upver} + +# WIP patch + +# Prevent %%doc confusion over LICENSE files cp Zend/LICENSE ZEND_LICENSE -cp TSRM/LICENSE TSRM_LICENSE cp Zend/asm/LICENSE BOOST_LICENSE +cp TSRM/LICENSE TSRM_LICENSE cp sapi/fpm/LICENSE fpm_LICENSE cp ext/mbstring/libmbfl/LICENSE libmbfl_LICENSE +cp ext/fileinfo/libmagic/LICENSE libmagic_LICENSE cp ext/bcmath/libbcmath/LICENSE libbcmath_LICENSE cp ext/date/lib/LICENSE.rst timelib_LICENSE -mkdir build-cgi build-embedded \ -%if %{with_modphp} - build-apache \ -%endif -%if %{with_zts} - build-zts build-ztscli \ +# Multiple builds for multiple SAPIs +mkdir build-cgi build-apache build-embedded \ +%if %{with zts} + build-ztscli \ %endif build-fpm - +# ----- Manage known as failed test ------- +# affected by systzdata patch +%if %{with tzdata} rm ext/date/tests/timezone_location_get.phpt -rm ext/date/tests/timezone_version_get.phpt -rm ext/date/tests/timezone_version_get_basic1.phpt +rm ext/date/tests/bug80963.phpt +%endif +# too fast builder +rm ext/date/tests/bug73837.phpt +# Should be skipped but fails sometime +rm ext/standard/tests/file/file_get_contents_error001.phpt +# fails sometime rm ext/sockets/tests/mcast_ipv?_recv.phpt +# cause stack exhausion rm Zend/tests/bug54268.phpt rm Zend/tests/bug68412.phpt +# slow and erratic result +rm sapi/cli/tests/upload_2G.phpt +# tar issue rm ext/zlib/tests/004-mb.phpt +# avoid issue when 2 builds run simultaneously (keep 64321 for the SCL) +%ifarch x86_64 +sed -e 's/64321/64322/' -i ext/openssl/tests/*.phpt +%else +sed -e 's/64321/64323/' -i ext/openssl/tests/*.phpt +%endif + +# Safety check for API version change. pver=$(sed -n '/#define PHP_VERSION /{s/.* "//;s/".*$//;p}' main/php_version.h) -if test "x${pver}" != "x%{upver}"; then - : Error: Upstream PHP version is now ${pver}, expecting %{upver}. - : Update the version macros and rebuild. +if test "x${pver}" != "x%{upver}%{?rcver}"; then + : Error: Upstream PHP version is now ${pver}, expecting %{upver}%{?rcver}. + : Update the version/rcver macros and rebuild. exit 1 fi -vapi=`sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h` +vapi=$(sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h) if test "x${vapi}" != "x%{apiver}"; then : Error: Upstream API version is now ${vapi}, expecting %{apiver}. : Update the apiver macro and rebuild. exit 1 fi -vzend=`sed -n '/#define ZEND_MODULE_API_NO/{s/^[^0-9]*//;p;}' Zend/zend_modules.h` +vzend=$(sed -n '/#define ZEND_MODULE_API_NO/{s/^[^0-9]*//;p;}' Zend/zend_modules.h) if test "x${vzend}" != "x%{zendver}"; then : Error: Upstream Zend ABI version is now ${vzend}, expecting %{zendver}. : Update the zendver macro and rebuild. exit 1 fi -vpdo=`sed -n '/#define PDO_DRIVER_API/{s/.*[ ]//;p}' ext/pdo/php_pdo_driver.h` +# Safety check for PDO ABI version change +vpdo=$(sed -n '/#define PDO_DRIVER_API/{s/.*[ ]//;p}' ext/pdo/php_pdo_driver.h) if test "x${vpdo}" != "x%{pdover}"; then : Error: Upstream PDO ABI version is now ${vpdo}, expecting %{pdover}. : Update the pdover macro and rebuild. exit 1 fi +# Check for some extension version +ver=$(sed -n '/#define PHP_ZIP_VERSION /{s/.* "//;s/".*$//;p}' ext/zip/php_zip.h) +if test "$ver" != "%{zipver}"; then + : Error: Upstream ZIP version is now ${ver}, expecting %{zipver}. + : Update the %{zipver} macro and rebuild. + exit 1 +fi + +# https://bugs.php.net/63362 - Not needed but installed headers. +# Drop some Windows specific headers to avoid installation, +# before build to ensure they are really not needed. rm -f TSRM/tsrm_win32.h \ TSRM/tsrm_config.w32.h \ Zend/zend_config.w32.h \ @@ -648,40 +879,79 @@ rm -f TSRM/tsrm_win32.h \ main/win32_internal_function_disabled.h \ main/win95nt.h +# Fix some bogus permissions find . -name \*.[ch] -exec chmod 644 {} \; chmod 644 README.* -cp %{SOURCE11} %{SOURCE12} %{SOURCE13} . +# Some extensions have their own configuration file +cp %{S:50} %{S:51} %{S:53} . +# Regenerated bison files +# to force, rm Zend/zend_{language,ini}_parser.[ch] +if [ ! -f Zend/zend_language_parser.c ]; then + scripts/dev/genfiles +fi -%build +%build +# This package fails to build with LTO due to undefined symbols. LTO +# was disabled in OpenSuSE as well, but with no real explanation why +# beyond the undefined symbols. It really shold be investigated further. +# Disable LTO %define _lto_cflags %{nil} +# Set build date from https://reproducible-builds.org/specs/source-date-epoch/ export SOURCE_DATE_EPOCH=$(date +%s -r NEWS) export PHP_UNAME=$(uname) -export PHP_BUILD_SYSTEM=$(cat /etc/openEuler-release | sed -e 's/ Beta//') +export PHP_BUILD_SYSTEM=$(cat /etc/system-release | sed -e 's/ Beta//') %if 0%{?vendor:1} export PHP_BUILD_PROVIDER="%{vendor}" %endif export PHP_BUILD_COMPILER="$(gcc --version | head -n1)" export PHP_BUILD_ARCH="%{_arch}" +# Force use of system libtool: libtoolize --force --copy -cat `aclocal --print-ac-dir`/{libtool,ltoptions,ltsugar,ltversion,lt~obsolete}.m4 >build/libtool.m4 +cat $(aclocal --print-ac-dir)/{libtool,ltoptions,ltsugar,ltversion,lt~obsolete}.m4 >build/libtool.m4 +# Regenerate configure scripts (patches change config.m4's) touch configure.ac ./buildconf --force - +%if %{with debug} +LDFLAGS="-fsanitize=address" +export LDFLAGS +CFLAGS=$(echo $RPM_OPT_FLAGS -fno-strict-aliasing -Wno-pointer-sign -fsanitize=address -ggdb | sed 's/-mstackrealign//') +%else CFLAGS=$(echo $RPM_OPT_FLAGS -fno-strict-aliasing -Wno-pointer-sign | sed 's/-mstackrealign//') +%endif export CFLAGS +# Install extension modules in %{_libdir}/php/modules. EXTENSION_DIR=%{_libdir}/php/modules; export EXTENSION_DIR +# Set PEAR_INSTALLDIR to ensure that the hard-coded include_path +# includes the PEAR directory even though pear is packaged +# separately. PEAR_INSTALLDIR=%{_datadir}/pear; export PEAR_INSTALLDIR +# Shell function to configure and build a PHP tree. build() { +# Old/recent bison version seems to produce a broken parser; +# upstream uses GNU Bison 2.3. Workaround: +# Only provided in official tarball (not in snapshot) +if [ -f ../Zend/zend_language_parser.c ]; then mkdir Zend && cp ../Zend/zend_{language,ini}_{parser,scanner}.[ch] Zend +fi + +# Always static: +# date, filter, libxml, reflection, spl: not supported +# hash: for PHAR_SIG_SHA256 and PHAR_SIG_SHA512 +# session: dep on hash, used by soap +# sockets: heavily used by FPM test suite +# pcre: used by filter, zip +# pcntl, readline: only used by CLI sapi +# openssl: for PHAR_SIG_OPENSSL +# zlib: used by image ln -sf ../configure %configure \ @@ -694,23 +964,33 @@ ln -sf ../configure --with-pic \ --disable-rpath \ --without-pear \ - --with-exec-dir=%{_bindir} \ --without-gdbm \ --with-openssl \ +%if %{with openssl32} + --with-openssl-argon2 \ +%endif --with-system-ciphers \ +%if %{with libpcre} --with-external-pcre \ +%endif +%if %{with libxcrypt} --with-external-libcrypt \ -%ifarch s390 s390x sparc64 sparcv9 riscv64 loongarch64 - --without-pcre-jit \ %endif --with-zlib \ --with-layout=GNU \ - --with-kerberos \ --with-libxml \ +%if %{with tzdata} --with-system-tzdata \ +%endif --with-mhash \ --without-password-argon2 \ +%if %{with dtrace} --enable-dtrace \ +%endif +%if %{with debug} + --enable-debug \ +%endif + --enable-sockets \ $* if test $? != 0; then tail -500 config.log @@ -718,49 +998,49 @@ if test $? != 0; then exit 1 fi -%make_build +make %{?_smp_mflags} } +# Build /usr/bin/php-cgi with the CGI SAPI, and most shared extensions pushd build-cgi build --libdir=%{_libdir}/php \ --enable-pcntl \ --enable-opcache \ - --enable-phpdbg \ -%if %{with_imap} - --with-imap=shared --with-imap-ssl \ -%endif + --with-capstone \ + --enable-phpdbg --enable-phpdbg-readline \ --enable-mbstring=shared \ --enable-mbregex \ --enable-gd=shared \ +%if %{with libgd} --with-external-gd \ +%else + --with-webp \ + --with-jpeg \ + --with-xpm \ + --with-freetype \ +%endif --with-gmp=shared \ --enable-calendar=shared \ --enable-bcmath=shared \ --with-bz2=shared \ --enable-ctype=shared \ - --enable-dba=shared \ -%if %{with_db4} - --with-db4=%{_prefix} \ -%endif + --enable-dba=shared --with-db4=%{_prefix} \ --with-tcadb=%{_prefix} \ -%if %{with_lmdb} --with-lmdb=%{_prefix} \ -%endif -%if %{with_qdbm} +%if %{with qdbm} --with-qdbm=%{_prefix} \ %endif --enable-exif=shared \ --enable-ftp=shared \ --with-gettext=shared \ --with-iconv=shared \ - --enable-sockets=shared \ --enable-tokenizer=shared \ --with-ldap=shared --with-ldap-sasl \ --enable-mysqlnd=shared \ --with-mysqli=shared,mysqlnd \ --with-mysql-sock=%{mysql_sock} \ -%if %{with_firebird} +%if %{with firebird} --with-pdo-firebird=shared \ %endif --enable-dom=shared \ @@ -773,39 +1053,36 @@ build --libdir=%{_libdir}/php \ --enable-xmlreader=shared --enable-xmlwriter=shared \ --with-curl=shared \ --enable-pdo=shared \ - --with-pdo-odbc=shared,unixODBC,%{_prefix} \ +%if %{with iodbc} + --with-iodbc=shared \ + --with-pdo-odbc=shared,iodbc \ +%else + --with-unixODBC=shared \ + --with-pdo-odbc=shared,unixODBC \ +%endif --with-pdo-mysql=shared,mysqlnd \ --with-pdo-pgsql=shared,%{_prefix} \ --with-pdo-sqlite=shared \ -%if %{with_freetds} --with-pdo-dblib=shared,%{_prefix} \ -%endif --with-sqlite3=shared \ +%if %{with zip} + --with-zip=shared \ +%endif --without-readline \ --with-libedit \ -%if %{with_pspell} - --with-pspell=shared \ -%endif --enable-phar=shared \ -%if %{with_tidy} --with-tidy=shared,%{_prefix} \ -%endif --enable-sysvmsg=shared --enable-sysvshm=shared --enable-sysvsem=shared \ --enable-shmop=shared \ --enable-posix=shared \ - --with-unixODBC=shared,%{_prefix} \ --enable-fileinfo=shared \ --with-ffi=shared \ -%if %{with_sodium} --with-sodium=shared \ -%else - --without-sodium \ -%endif --enable-intl=shared \ --with-enchant=shared popd -without_shared="--without-gd \ +without_shared="--disable-gd \ --disable-dom --disable-dba --without-unixODBC \ --disable-opcache \ --disable-phpdbg \ @@ -813,41 +1090,46 @@ without_shared="--without-gd \ --disable-xmlreader --disable-xmlwriter \ --without-sodium \ --without-sqlite3 --disable-phar --disable-fileinfo \ - --without-pspell \ --without-curl --disable-posix --disable-xml \ --disable-simplexml --disable-exif --without-gettext \ --without-iconv --disable-ftp --without-bz2 --disable-ctype \ - --disable-shmop --disable-sockets --disable-tokenizer \ + --disable-shmop --disable-tokenizer \ --disable-sysvmsg --disable-sysvshm --disable-sysvsem" -%if %{with_modphp} +# Build Apache module, and the CLI SAPI, /usr/bin/php pushd build-apache build --with-apxs2=%{_httpd_apxs} \ --libdir=%{_libdir}/php \ +%if %{with lsws} + --enable-litespeed \ +%endif --without-mysqli \ --disable-pdo \ ${without_shared} popd -%endif +# Build php-fpm pushd build-fpm build --enable-fpm \ - --with-fpm-acl \ --with-fpm-systemd \ --with-fpm-selinux \ + --with-fpm-acl \ --libdir=%{_libdir}/php \ --without-mysqli \ --disable-pdo \ ${without_shared} popd +# Build for inclusion as embedded script language into applications, +# /usr/lib[64]/libphp.so pushd build-embedded build --enable-embed \ --without-mysqli --disable-pdo \ ${without_shared} popd -%if %{with_zts} +%if %{with zts} +# Build a special thread-safe (mainly for modules) pushd build-ztscli EXTENSION_DIR=%{_libdir}/php-zts/modules @@ -859,32 +1141,31 @@ build --includedir=%{_includedir}/php-zts \ --with-config-file-scan-dir=%{_sysconfdir}/php-zts.d \ --enable-pcntl \ --enable-opcache \ -%if %{with_imap} - --with-imap=shared --with-imap-ssl \ -%endif + --with-capstone \ --enable-mbstring=shared \ --enable-mbregex \ --enable-gd=shared \ +%if %{with libgd} --with-external-gd \ +%else + --with-webp \ + --with-jpeg \ + --with-xpm \ + --with-freetype \ +%endif --with-gmp=shared \ --enable-calendar=shared \ --enable-bcmath=shared \ --with-bz2=shared \ --enable-ctype=shared \ - --enable-dba=shared \ -%if %{with_db4} - --with-db4=%{_prefix} \ -%endif + --enable-dba=shared --with-db4=%{_prefix} \ --with-tcadb=%{_prefix} \ -%if %{with_lmdb} --with-lmdb=%{_prefix} \ -%endif -%if %{with_qdbm} +%if %{with qdbm} --with-qdbm=%{_prefix} \ %endif --with-gettext=shared \ --with-iconv=shared \ - --enable-sockets=shared \ --enable-tokenizer=shared \ --enable-exif=shared \ --enable-ftp=shared \ @@ -893,7 +1174,7 @@ build --includedir=%{_includedir}/php-zts \ --with-mysqli=shared,mysqlnd \ --with-mysql-sock=%{mysql_sock} \ --enable-mysqlnd-threading \ -%if %{with_firebird} +%if %{with firebird} --with-pdo-firebird=shared \ %endif --enable-dom=shared \ @@ -906,62 +1187,62 @@ build --includedir=%{_includedir}/php-zts \ --enable-xmlreader=shared --enable-xmlwriter=shared \ --with-curl=shared \ --enable-pdo=shared \ - --with-pdo-odbc=shared,unixODBC,%{_prefix} \ +%if %{with iodbc} + --with-iodbc=shared \ + --with-pdo-odbc=shared,iodbc \ +%else + --with-unixODBC=shared \ + --with-pdo-odbc=shared,unixODBC \ +%endif --with-pdo-mysql=shared,mysqlnd \ --with-pdo-pgsql=shared,%{_prefix} \ --with-pdo-sqlite=shared \ -%if %{with_freetds} --with-pdo-dblib=shared,%{_prefix} \ -%endif --with-sqlite3=shared \ +%if %{with zip} + --with-zip=shared \ +%endif --without-readline \ --with-libedit \ -%if %{with_pspell} - --with-pspell=shared \ -%endif --enable-phar=shared \ -%if %{with_tidy} --with-tidy=shared,%{_prefix} \ -%endif --enable-sysvmsg=shared --enable-sysvshm=shared --enable-sysvsem=shared \ --enable-shmop=shared \ --enable-posix=shared \ - --with-unixODBC=shared,%{_prefix} \ --enable-fileinfo=shared \ --with-ffi=shared \ -%if %{with_sodium} --with-sodium=shared \ -%else - --without-sodium \ -%endif --enable-intl=shared \ --with-enchant=shared popd +### NOTE!!! EXTENSION_DIR was changed for the -zts build, so it must remain +### the last SAPI to be built. %endif %check : Ensure proper NTS/ZTS build $RPM_BUILD_ROOT%{_bindir}/php -n -v | grep NTS -%if %{with_zts} +%if %{with zts} $RPM_BUILD_ROOT%{_bindir}/zts-php -n -v | grep ZTS %endif -%if %runselftest +%if %{with tests} cd build-fpm +# Run tests, using the CLI SAPI export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2 export SKIP_ONLINE_TESTS=1 export SKIP_IO_CAPTURE_TESTS=1 unset TZ LANG LC_ALL -if ! make test TESTS=-j4; then +if ! make test TESTS=%{?_smp_mflags}; then set +x for f in $(find .. -name \*.diff -type f -print); do if ! grep -q XFAIL "${f/.diff/.phpt}" then echo "TEST FAILURE: $f --" - cat "$f" + head -n 100 "$f" echo -e "\n-- $f result ends." fi done @@ -971,103 +1252,115 @@ fi unset NO_INTERACTION REPORT_EXIT_STATUS MALLOC_CHECK_ %endif + %install -%if %{with_zts} + +%if %{with zts} +# Install the extensions for the ZTS version make -C build-ztscli install \ INSTALL_ROOT=$RPM_BUILD_ROOT %endif +# Install the version for embedded script language in applications + php_embed.h make -C build-embedded install-sapi install-headers \ INSTALL_ROOT=$RPM_BUILD_ROOT +# Install the php-fpm binary make -C build-fpm install-fpm \ INSTALL_ROOT=$RPM_BUILD_ROOT +# Install everything from the CGI SAPI build make -C build-cgi install \ INSTALL_ROOT=$RPM_BUILD_ROOT +# Use php-config from embed SAPI to reduce used libs install -m 755 build-embedded/scripts/php-config $RPM_BUILD_ROOT%{_bindir}/php-config +# Install the default configuration file install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/ -install -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{_sysconfdir}/php.ini +install -m 644 %{S:2} $RPM_BUILD_ROOT%{_sysconfdir}/php.ini +# For third-party packaging: install -m 755 -d $RPM_BUILD_ROOT%{_datadir}/php/preload -%if %{with_modphp} +# install the DSO install -m 755 -d $RPM_BUILD_ROOT%{_httpd_moddir} -install -m 755 build-apache/libs/libphp.so $RPM_BUILD_ROOT%{_httpd_moddir} -%endif +install -m 755 build-apache/libs/libphp.so $RPM_BUILD_ROOT%{_httpd_moddir}/libphp.so -%if %{with_modphp} -install -D -m 644 %{SOURCE8} $RPM_BUILD_ROOT%{_httpd_modconfdir}/20-php.conf -%endif -install -D -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_httpd_confdir}/php.conf +# Apache config fragment +# Dual config file with httpd >= 2.4 +install -D -m 644 %{S:9} $RPM_BUILD_ROOT%{_httpd_modconfdir}/20-php.conf +install -D -m 644 %{S:1} $RPM_BUILD_ROOT%{_httpd_confdir}/php.conf install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php.d -%if %{with_zts} +%if %{with zts} install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d %endif -install -m 755 -d $RPM_BUILD_ROOT%{_sharedstatedir}/php -install -m 755 -d $RPM_BUILD_ROOT%{_sharedstatedir}/php/peclxml -install -m 700 -d $RPM_BUILD_ROOT%{_sharedstatedir}/php/session -install -m 700 -d $RPM_BUILD_ROOT%{_sharedstatedir}/php/wsdlcache -install -m 700 -d $RPM_BUILD_ROOT%{_sharedstatedir}/php/opcache - +install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php +install -m 700 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/session +install -m 700 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/wsdlcache +install -m 700 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/opcache +install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/peclxml install -m 755 -d $RPM_BUILD_ROOT%{_docdir}/pecl install -m 755 -d $RPM_BUILD_ROOT%{_datadir}/tests/pecl +%if %{with lsws} +install -m 755 build-apache/sapi/litespeed/php $RPM_BUILD_ROOT%{_bindir}/lsphp +%endif + +# PHP-FPM stuff +# Log install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/log/php-fpm -install -m 755 -d $RPM_BUILD_ROOT/run/php-fpm +# Config install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d -install -m 644 %{SOURCE4} $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.conf -install -m 644 %{SOURCE5} $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d/www.conf +install -m 644 %{S:4} $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.conf +install -m 644 %{S:5} $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d/www.conf mv $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.conf.default . mv $RPM_BUILD_ROOT%{_sysconfdir}/php-fpm.d/www.conf.default . -install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/php-fpm.service.d -install -Dm 644 %{SOURCE6} $RPM_BUILD_ROOT%{_unitdir}/php-fpm.service -install -Dm 644 %{SOURCE9} $RPM_BUILD_ROOT%{_unitdir}/httpd.service.d/php-fpm.conf -install -Dm 644 %{SOURCE9} $RPM_BUILD_ROOT%{_unitdir}/nginx.service.d/php-fpm.conf +# LogRotate install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d -install -m 644 %{SOURCE7} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/php-fpm -install -D -m 644 %{SOURCE10} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/conf.d/php-fpm.conf -install -D -m 644 %{SOURCE14} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/default.d/php.conf +install -m 644 %{S:7} $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/php-fpm + +install -m 755 -d $RPM_BUILD_ROOT/run/php-fpm +# install systemd unit files and scripts for handling server startup +# this folder requires systemd >= 204 +install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/php-fpm.service.d +install -Dm 644 %{S:6} $RPM_BUILD_ROOT%{_unitdir}/php-fpm.service +install -Dm 644 %{S:12} $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/httpd.service.d/php-fpm.conf +install -Dm 644 %{S:12} $RPM_BUILD_ROOT%{_sysconfdir}/systemd/system/nginx.service.d/php-fpm.conf + +# Nginx configuration +install -D -m 644 %{S:13} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/conf.d/php-fpm.conf +install -D -m 644 %{S:14} $RPM_BUILD_ROOT%{_sysconfdir}/nginx/default.d/php.conf TESTCMD="$RPM_BUILD_ROOT%{_bindir}/php --no-php-ini" -for mod in core date filter hash libxml openssl pcntl pcre readline reflection session spl standard zlib +# Ensure all provided extensions are really there +for mod in core date filter hash json libxml openssl pcntl pcre readline reflection session spl standard zlib do - $TESTCMD --modules | grep -qi $mod + $TESTCMD --modules | grep -i "$mod\$" done TESTCMD="$TESTCMD --define extension_dir=$RPM_BUILD_ROOT%{_libdir}/php/modules" +# Generate files lists and stub .ini files for each subpackage for mod in pgsql odbc ldap snmp \ -%if %{with_imap} - imap \ -%endif mysqlnd mysqli \ mbstring gd dom xsl soap bcmath dba \ simplexml bz2 calendar ctype exif ftp gettext gmp iconv \ - sockets tokenizer opcache \ + tokenizer opcache \ + pdo \ +%if %{with zip} + zip \ +%endif sqlite3 \ enchant phar fileinfo intl \ ffi \ -%if %{with_tidy} - tidy \ -%endif -%if %{with_pspell} - pspell \ -%endif - curl \ -%if %{with_sodium} + tidy curl \ sodium \ -%endif posix shmop sysvshm sysvsem sysvmsg xml \ - pdo pdo_mysql pdo pdo_pgsql pdo_odbc pdo_sqlite \ -%if %{with_firebird} + pdo_mysql pdo_pgsql pdo_odbc pdo_sqlite pdo_dblib \ +%if %{with firebird} pdo_firebird \ -%endif -%if %{with_freetds} - pdo_dblib \ %endif xmlreader xmlwriter do @@ -1086,19 +1379,20 @@ do ini=20-${mod}.ini;; esac - $TESTCMD --modules | grep -qi $mod + $TESTCMD --modules | grep -i "$mod\$" + # some extensions have their own config file if [ -f ${ini} ]; then cp -p ${ini} $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini} -%if %{with_zts} + %if %{with zts} cp -p ${ini} $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/${ini} -%endif + %endif else cat > $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${ini} < $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/${ini} < files.${mod} <> files.xml +# mysqlnd cat files.mysqli \ files.pdo_mysql \ >> files.mysqlnd +# Split out the PDO modules cat files.pdo_pgsql >> files.pgsql cat files.pdo_odbc >> files.odbc +# sysv* and posix in packaged in php-process cat files.shmop files.sysv* files.posix > files.process +# Package sqlite3 and pdo_sqlite with pdo; isolating the sqlite dependency +# isn't useful at this time since rpm itself requires sqlite. cat files.pdo_sqlite >> files.pdo cat files.sqlite3 >> files.pdo +# Package curl, phar and fileinfo in -common. cat files.curl files.phar files.fileinfo \ files.exif files.gettext files.iconv files.calendar \ - files.ftp files.bz2 files.ctype files.sockets \ + files.ftp files.bz2 files.ctype \ files.tokenizer > files.common -install -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/php.d/opcache-default.blacklist -%if %{with_zts} -install -m 644 %{SOURCE12} $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/opcache-default.blacklist +# The default Zend OPcache blacklist file +install -m 644 %{S:51} $RPM_BUILD_ROOT%{_sysconfdir}/php.d/opcache-default.blacklist +%if %{with zts} +install -m 644 %{S:51} $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/opcache-default.blacklist sed -e '/blacklist_filename/s/php.d/php-zts.d/' \ -i $RPM_BUILD_ROOT%{_sysconfdir}/php-zts.d/10-opcache.ini %endif +# Install the macros file: sed -e "s/@PHP_APIVER@/%{apiver}-%{__isa_bits}/" \ -e "s/@PHP_ZENDVER@/%{zendver}-%{__isa_bits}/" \ -e "s/@PHP_PDOVER@/%{pdover}-%{__isa_bits}/" \ -e "s/@PHP_VERSION@/%{upver}/" \ -%if ! %{with_zts} +%if %{without zts} -e "/zts/d" \ %endif - < %{SOURCE3} > macros.php + < %{S:3} > macros.php install -m 644 -D macros.php \ $RPM_BUILD_ROOT%{_rpmmacrodir}/macros.php +# Remove unpackaged files rm -rf $RPM_BUILD_ROOT%{_libdir}/php/modules/*.a \ $RPM_BUILD_ROOT%{_libdir}/php-zts/modules/*.a \ $RPM_BUILD_ROOT%{_bindir}/{phptar} \ @@ -1162,6 +1466,7 @@ rm -rf $RPM_BUILD_ROOT%{_libdir}/php/modules/*.a \ $RPM_BUILD_ROOT%{_libdir}/libphp.a \ $RPM_BUILD_ROOT%{_libdir}/libphp.la +# Remove irrelevant docs rm -f README.{Zeus,QNX,CVS-RULES} @@ -1171,62 +1476,64 @@ rm -f README.{Zeus,QNX,CVS-RULES} %preun fpm %systemd_preun php-fpm.service +# Raised by new pool installation or new extension installation %transfiletriggerin fpm -- %{_sysconfdir}/php-fpm.d %{_sysconfdir}/php.d systemctl try-restart php-fpm.service >/dev/null 2>&1 || : %files -%if %{with_modphp} %{_httpd_moddir}/libphp.so -%config(noreplace) %{_httpd_modconfdir}/20-php.conf -%attr(0770,root,apache) %dir %{_sharedstatedir}/php/session -%attr(0770,root,apache) %dir %{_sharedstatedir}/php/wsdlcache -%attr(0770,root,apache) %dir %{_sharedstatedir}/php/opcache +%attr(0770,root,apache) %dir %{_localstatedir}/lib/php/session +%attr(0770,root,apache) %dir %{_localstatedir}/lib/php/wsdlcache +%attr(0770,root,apache) %dir %{_localstatedir}/lib/php/opcache %config(noreplace) %{_httpd_confdir}/php.conf -%endif +%config(noreplace) %{_httpd_modconfdir}/20-php.conf %files common -f files.common %license LICENSE TSRM_LICENSE ZEND_LICENSE BOOST_LICENSE +%license libmagic_LICENSE %license timelib_LICENSE +%doc php.ini-* %config(noreplace) %{_sysconfdir}/php.ini %dir %{_sysconfdir}/php.d %dir %{_libdir}/php %dir %{_libdir}/php/modules -%if %{with_zts} +%if %{with zts} %dir %{_sysconfdir}/php-zts.d %dir %{_libdir}/php-zts %dir %{_libdir}/php-zts/modules %endif -%dir %{_sharedstatedir}/php -%dir %{_sharedstatedir}/php/peclxml -%dir %{_datadir}/php +%dir %{_localstatedir}/lib/php +%dir %{_localstatedir}/lib/php/peclxml %dir %{_docdir}/pecl %dir %{_datadir}/tests %dir %{_datadir}/tests/pecl +%dir %{_datadir}/php %files cli %{_bindir}/php -%if %{with_zts} -%{_bindir}/zts-php -%endif %{_bindir}/php-cgi %{_bindir}/phar.phar %{_bindir}/phar +# provides phpize here (not in -devel) for pecl command %{_bindir}/phpize - +%if %{with zts} +%{_bindir}/zts-php +%endif %files dbg -%doc sapi/phpdbg/CREDITS %{_bindir}/phpdbg -%if %{with_zts} +%if %{with zts} %{_bindir}/zts-phpdbg %endif +%doc sapi/phpdbg/CREDITS %files fpm +%doc php-fpm.conf.default www.conf.default %license fpm_LICENSE -%attr(0770,root,apache) %dir %{_sharedstatedir}/php/session -%attr(0770,root,apache) %dir %{_sharedstatedir}/php/wsdlcache -%attr(0770,root,apache) %dir %{_sharedstatedir}/php/opcache +%attr(0770,root,apache) %dir %{_localstatedir}/lib/php/session +%attr(0770,root,apache) %dir %{_localstatedir}/lib/php/wsdlcache +%attr(0770,root,apache) %dir %{_localstatedir}/lib/php/opcache %config(noreplace) %{_httpd_confdir}/php.conf %config(noreplace) %{_sysconfdir}/php-fpm.conf %config(noreplace) %{_sysconfdir}/php-fpm.d/www.conf @@ -1234,25 +1541,30 @@ systemctl try-restart php-fpm.service >/dev/null 2>&1 || : %config(noreplace) %{_sysconfdir}/nginx/conf.d/php-fpm.conf %config(noreplace) %{_sysconfdir}/nginx/default.d/php.conf %{_unitdir}/php-fpm.service -%{_unitdir}/httpd.service.d/php-fpm.conf -%{_unitdir}/nginx.service.d/php-fpm.conf -%{_sbindir}/php-fpm +%config(noreplace) %{_sysconfdir}/systemd/system/httpd.service.d/php-fpm.conf +%config(noreplace) %{_sysconfdir}/systemd/system/nginx.service.d/php-fpm.conf %dir %{_sysconfdir}/systemd/system/php-fpm.service.d +%dir %ghost /run/php-fpm +%{_sbindir}/php-fpm %dir %{_sysconfdir}/php-fpm.d # log owned by apache for log %attr(770,apache,root) %dir %{_localstatedir}/log/php-fpm -%dir %ghost /run/php-fpm %dir %{_datadir}/fpm %{_datadir}/fpm/status.html +%if %{with lsws} +%files litespeed +%{_bindir}/lsphp +%endif + %files devel %{_bindir}/php-config %{_includedir}/php %{_libdir}/php/build -%if %{with_zts} +%if %{with zts} %{_bindir}/zts-php-config -%{_bindir}/zts-phpize %{_includedir}/php-zts +%{_bindir}/zts-phpize %{_libdir}/php-zts/build %endif %{_rpmmacrodir}/macros.php @@ -1263,9 +1575,6 @@ systemctl try-restart php-fpm.service >/dev/null 2>&1 || : %files pgsql -f files.pgsql %files odbc -f files.odbc -%if %{with_imap} -%files imap -f files.imap -%endif %files ldap -f files.ldap %files snmp -f files.snmp %files xml -f files.xml @@ -1278,39 +1587,40 @@ systemctl try-restart php-fpm.service >/dev/null 2>&1 || : %files gmp -f files.gmp %files dba -f files.dba %files pdo -f files.pdo -%if %{with_tidy} %files tidy -f files.tidy -%endif -%if %{with_freetds} %files pdo-dblib -f files.pdo_dblib -%endif -%if %{with_pspell} -%files pspell -f files.pspell -%endif %files intl -f files.intl %files process -f files.process -%if %{with_firebird} +%if %{with firebird} %files pdo-firebird -f files.pdo_firebird %endif %files enchant -f files.enchant %files mysqlnd -f files.mysqlnd %files opcache -f files.opcache %config(noreplace) %{_sysconfdir}/php.d/opcache-default.blacklist -%if %{with_zts} +%if %{with zts} %config(noreplace) %{_sysconfdir}/php-zts.d/opcache-default.blacklist %endif -%if %{with_sodium} -%files sodium -f files.sodium +%if %{with zip} +%files zip -f files.zip %endif +%files sodium -f files.sodium %files ffi -f files.ffi %dir %{_datadir}/php/preload %files help -%doc EXTENSIONS NEWS README* UPGRADING* *md docs +%doc EXTENSIONS NEWS UPGRADING* *.md docs %doc php-fpm.conf.default www.conf.default php.ini-* %{_mandir}/man?/* %changelog +* Sun Mar 16 2025 Funda Wang - 8.4.5-1 +- New version 8.4.5 +- Resync with remi codebase +- build sockets extension statically +- support litespeed webserver +- support freetds database server + * Wed Mar 12 2025 Funda Wang - 8.3.19-1 - New version 8.3.19