Compare commits
1 Commits
c8-stream-
...
c10-beta
Author | SHA1 | Date | |
---|---|---|---|
f5c7f480a5 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -1 +1 @@
|
|||||||
SOURCES/php-7.2.24.tar.xz
|
php-8.3.10.tar.xz
|
||||||
|
@ -1 +0,0 @@
|
|||||||
d31628bdc89a724a2a0950c2ed7d79b40cf489a7 SOURCES/php-7.2.24.tar.xz
|
|
@ -5,17 +5,17 @@ zend_extension=opcache
|
|||||||
opcache.enable=1
|
opcache.enable=1
|
||||||
|
|
||||||
; Determines if Zend OPCache is enabled for the CLI version of PHP
|
; Determines if Zend OPCache is enabled for the CLI version of PHP
|
||||||
;opcache.enable_cli=0
|
opcache.enable_cli=1
|
||||||
|
|
||||||
; The OPcache shared memory storage size.
|
; The OPcache shared memory storage size.
|
||||||
opcache.memory_consumption=128
|
;opcache.memory_consumption=128
|
||||||
|
|
||||||
; The amount of memory for interned strings in Mbytes.
|
; The amount of memory for interned strings in Mbytes.
|
||||||
opcache.interned_strings_buffer=8
|
;opcache.interned_strings_buffer=8
|
||||||
|
|
||||||
; The maximum number of keys (scripts) in the OPcache hash table.
|
; The maximum number of keys (scripts) in the OPcache hash table.
|
||||||
; Only numbers between 200 and 1000000 are allowed.
|
; Only numbers between 200 and 1000000 are allowed.
|
||||||
opcache.max_accelerated_files=4000
|
;opcache.max_accelerated_files=10000
|
||||||
|
|
||||||
; The maximum percentage of "wasted" memory until a restart is scheduled.
|
; The maximum percentage of "wasted" memory until a restart is scheduled.
|
||||||
;opcache.max_wasted_percentage=5
|
;opcache.max_wasted_percentage=5
|
||||||
@ -42,18 +42,20 @@ opcache.max_accelerated_files=4000
|
|||||||
; size of the optimized code.
|
; size of the optimized code.
|
||||||
;opcache.save_comments=1
|
;opcache.save_comments=1
|
||||||
|
|
||||||
; If enabled, a fast shutdown sequence is used for the accelerated code
|
; If enabled, compilation warnings (including notices and deprecations) will
|
||||||
; Depending on the used Memory Manager this may cause some incompatibilities.
|
; be recorded and replayed each time a file is included. Otherwise, compilation
|
||||||
;opcache.fast_shutdown=0
|
; warnings will only be emitted when the file is first cached.
|
||||||
|
;opcache.record_warnings=0
|
||||||
|
|
||||||
; Allow file existence override (file_exists, etc.) performance feature.
|
; Allow file existence override (file_exists, etc.) performance feature.
|
||||||
;opcache.enable_file_override=0
|
;opcache.enable_file_override=0
|
||||||
|
|
||||||
; A bitmask, where each bit enables or disables the appropriate OPcache
|
; A bitmask, where each bit enables or disables the appropriate OPcache
|
||||||
; passes
|
; passes
|
||||||
;opcache.optimization_level=0xffffffff
|
;opcache.optimization_level=0x7FFFBFFF
|
||||||
|
|
||||||
;opcache.inherited_hack=1
|
; This hack should only be enabled to work around "Cannot redeclare class"
|
||||||
|
; errors.
|
||||||
;opcache.dups_fix=0
|
;opcache.dups_fix=0
|
||||||
|
|
||||||
; The location of the OPcache blacklist file (wildcards allowed).
|
; The location of the OPcache blacklist file (wildcards allowed).
|
||||||
@ -65,10 +67,6 @@ opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
|
|||||||
; are cached.
|
; are cached.
|
||||||
;opcache.max_file_size=0
|
;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
|
; How long to wait (in seconds) for a scheduled restart to begin if the cache
|
||||||
; is not being accessed.
|
; is not being accessed.
|
||||||
;opcache.force_restart_timeout=180
|
;opcache.force_restart_timeout=180
|
||||||
@ -112,6 +110,15 @@ opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
|
|||||||
; cache is required.
|
; cache is required.
|
||||||
;opcache.file_cache_fallback=1
|
;opcache.file_cache_fallback=1
|
||||||
|
|
||||||
|
; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
|
||||||
|
; 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.
|
; Validate cached file permissions.
|
||||||
; Leads OPcache to check file readability on each access to cached file.
|
; Leads OPcache to check file readability on each access to cached file.
|
||||||
; This directive should be enabled in shared hosting environment, when few
|
; This directive should be enabled in shared hosting environment, when few
|
||||||
@ -124,7 +131,24 @@ opcache.blacklist_filename=/etc/php.d/opcache*.blacklist
|
|||||||
; different "chroot" environments.
|
; different "chroot" environments.
|
||||||
;opcache.validate_root=0
|
;opcache.validate_root=0
|
||||||
|
|
||||||
; Enables or disables copying of PHP code (text segment) into HUGE PAGES.
|
; If specified, it produces opcode dumps for debugging different stages of
|
||||||
; This should improve performance, but requires appropriate OS configuration.
|
; optimizations.
|
||||||
opcache.huge_code_pages=0
|
;opcache.opt_debug_level=0
|
||||||
|
|
||||||
|
; Specifies a PHP script that is going to be compiled and executed at server
|
||||||
|
; start-up.
|
||||||
|
; https://php.net/opcache.preload
|
||||||
|
;opcache.preload=
|
||||||
|
|
||||||
|
; Preloading code as root is not allowed for security reasons. This directive
|
||||||
|
; facilitates to let the preloading to be run as another user.
|
||||||
|
; https://php.net/opcache.preload_user
|
||||||
|
;opcache.preload_user=
|
||||||
|
|
||||||
|
; Prevents caching files that are less than this number of seconds old. It
|
||||||
|
; protects from caching of incompletely updated files. In case all file updates
|
||||||
|
; on your site are atomic, you may increase performance by setting it to "0".
|
||||||
|
;opcache.file_update_protection=2
|
||||||
|
|
||||||
|
; Absolute path used to store shared lockfiles (for *nix only).
|
||||||
|
;opcache.lockfile_path=/tmp
|
13
20-ffi.ini
Normal file
13
20-ffi.ini
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
; Enable ffi extension module
|
||||||
|
extension=ffi
|
||||||
|
|
||||||
|
; FFI API restriction. Possibe values:
|
||||||
|
; "preload" - enabled in CLI scripts and preloaded files (default)
|
||||||
|
; "false" - always disabled
|
||||||
|
; "true" - always enabled
|
||||||
|
;ffi.enable=preload
|
||||||
|
|
||||||
|
; List of headers files to preload, wildcard patterns allowed.
|
||||||
|
; /usr/share/php/preload used by for RPM packages
|
||||||
|
; /usr/local/share/php/preload may be used for local files
|
||||||
|
ffi.preload=/usr/share/php/preload/*.h:/usr/local/share/php/preload/*.h
|
@ -1,17 +0,0 @@
|
|||||||
diff -up php-5.3.0beta1/ext/recode/config9.m4.recode php-5.3.0beta1/ext/recode/config9.m4
|
|
||||||
--- php-5.3.0beta1/ext/recode/config9.m4.recode 2008-12-02 00:30:21.000000000 +0100
|
|
||||||
+++ php-5.3.0beta1/ext/recode/config9.m4 2009-02-28 09:46:50.000000000 +0100
|
|
||||||
@@ -4,13 +4,6 @@ dnl
|
|
||||||
|
|
||||||
dnl Check for extensions with which Recode can not work
|
|
||||||
if test "$PHP_RECODE" != "no"; then
|
|
||||||
- test "$PHP_IMAP" != "no" && recode_conflict="$recode_conflict imap"
|
|
||||||
-
|
|
||||||
- if test -n "$MYSQL_LIBNAME"; then
|
|
||||||
- PHP_CHECK_LIBRARY($MYSQL_LIBNAME, hash_insert, [
|
|
||||||
- recode_conflict="$recode_conflict mysql"
|
|
||||||
- ])
|
|
||||||
- fi
|
|
||||||
|
|
||||||
if test -n "$recode_conflict"; then
|
|
||||||
AC_MSG_ERROR([recode extension can not be configured together with:$recode_conflict])
|
|
@ -1,23 +0,0 @@
|
|||||||
--- a/ext/date/tests/bug66985.phpt 2014-10-30 07:32:03.297693403 +0100
|
|
||||||
+++ b/ext/date/tests/bug66985.phpt 2014-10-30 07:32:45.138877977 +0100
|
|
||||||
@@ -3,7 +3,7 @@
|
|
||||||
--FILE--
|
|
||||||
<?php
|
|
||||||
$zones = array(
|
|
||||||
- "CST6CDT", "Cuba", "Egypt", "Eire", "EST5EDT", "Factory", "GB-Eire",
|
|
||||||
+ "CST6CDT", "Cuba", "Egypt", "Eire", "EST5EDT", "GB-Eire",
|
|
||||||
"GMT0", "Greenwich", "Hongkong", "Iceland", "Iran", "Israel", "Jamaica",
|
|
||||||
"Japan", "Kwajalein", "Libya", "MST7MDT", "Navajo", "NZ-CHAT", "Poland",
|
|
||||||
"Portugal", "PST8PDT", "Singapore", "Turkey", "Universal", "W-SU",
|
|
||||||
@@ -45,11 +45,6 @@
|
|
||||||
)
|
|
||||||
DateTimeZone Object
|
|
||||||
(
|
|
||||||
- [timezone_type] => 3
|
|
||||||
- [timezone] => Factory
|
|
||||||
-)
|
|
||||||
-DateTimeZone Object
|
|
||||||
-(
|
|
||||||
[timezone_type] => 3
|
|
||||||
[timezone] => GB-Eire
|
|
||||||
)
|
|
@ -1,27 +0,0 @@
|
|||||||
|
|
||||||
Drop "Configure Command" from phpinfo as it doesn't
|
|
||||||
provide any useful information.
|
|
||||||
The available extensions are not related to this command.
|
|
||||||
|
|
||||||
--- php-5.4.9/ext/standard/info.c.orig 2012-12-11 10:43:02.450578276 +0100
|
|
||||||
+++ php-5.4.9/ext/standard/info.c 2012-12-11 10:44:12.530820821 +0100
|
|
||||||
@@ -743,9 +743,6 @@
|
|
||||||
#ifdef ARCHITECTURE
|
|
||||||
php_info_print_table_row(2, "Architecture", ARCHITECTURE);
|
|
||||||
#endif
|
|
||||||
-#ifdef CONFIGURE_COMMAND
|
|
||||||
- php_info_print_table_row(2, "Configure Command", CONFIGURE_COMMAND );
|
|
||||||
-#endif
|
|
||||||
|
|
||||||
if (sapi_module.pretty_name) {
|
|
||||||
php_info_print_table_row(2, "Server API", sapi_module.pretty_name );
|
|
||||||
--- php-5.4.9/ext/standard/tests/general_functions/phpinfo.phpt.orig 2012-12-11 11:07:26.959156091 +0100
|
|
||||||
+++ php-5.4.9/ext/standard/tests/general_functions/phpinfo.phpt 2012-12-11 11:07:30.899170970 +0100
|
|
||||||
@@ -20,7 +20,6 @@
|
|
||||||
|
|
||||||
System => %s
|
|
||||||
Build Date => %s%a
|
|
||||||
-Configure Command => %s
|
|
||||||
Server API => Command Line Interface
|
|
||||||
Virtual Directory Support => %s
|
|
||||||
Configuration File (php.ini) Path => %s
|
|
@ -1,35 +0,0 @@
|
|||||||
diff -up php-7.2.12RC1/scripts/phpize.in.headers php-7.2.12RC1/scripts/phpize.in
|
|
||||||
--- php-7.2.12RC1/scripts/phpize.in.headers 2018-10-23 11:47:43.000000000 +0200
|
|
||||||
+++ php-7.2.12RC1/scripts/phpize.in 2018-10-23 11:49:51.651818777 +0200
|
|
||||||
@@ -162,6 +162,15 @@ phpize_autotools()
|
|
||||||
$PHP_AUTOHEADER || exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
+phpize_check_headers()
|
|
||||||
+{
|
|
||||||
+ if test ! -f $includedir/main/php.h; then
|
|
||||||
+ echo "Can't find PHP headers in $includedir"
|
|
||||||
+ echo "The php-devel package is required for use of this command."
|
|
||||||
+ exit 1
|
|
||||||
+ fi
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
# Main script
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
@@ -180,12 +189,15 @@ case "$1" in
|
|
||||||
|
|
||||||
# Version
|
|
||||||
--version|-v)
|
|
||||||
+ phpize_check_headers
|
|
||||||
phpize_print_api_numbers
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
|
|
||||||
# Default
|
|
||||||
*)
|
|
||||||
+ phpize_check_headers
|
|
||||||
+
|
|
||||||
phpize_check_configm4 0
|
|
||||||
|
|
||||||
phpize_check_build_files
|
|
@ -1,30 +0,0 @@
|
|||||||
diff -up php-7.2.4RC1/sapi/litespeed/lsapilib.c.dlopen php-7.2.4RC1/sapi/litespeed/lsapilib.c
|
|
||||||
--- php-7.2.4RC1/sapi/litespeed/lsapilib.c.dlopen 2018-03-13 12:40:25.330885880 +0100
|
|
||||||
+++ php-7.2.4RC1/sapi/litespeed/lsapilib.c 2018-03-13 12:41:35.797251042 +0100
|
|
||||||
@@ -755,7 +755,7 @@ static int (*fp_lve_leave)(struct liblve
|
|
||||||
static int (*fp_lve_jail)( struct passwd *, char *) = NULL;
|
|
||||||
static int lsapi_load_lve_lib(void)
|
|
||||||
{
|
|
||||||
- s_liblve = dlopen("liblve.so.0", RTLD_LAZY);
|
|
||||||
+ s_liblve = dlopen("liblve.so.0", RTLD_NOW);
|
|
||||||
if (s_liblve)
|
|
||||||
{
|
|
||||||
fp_lve_is_available = dlsym(s_liblve, "lve_is_available");
|
|
||||||
diff -up php-7.2.4RC1/Zend/zend_portability.h.dlopen php-7.2.4RC1/Zend/zend_portability.h
|
|
||||||
--- php-7.2.4RC1/Zend/zend_portability.h.dlopen 2018-03-13 12:33:38.000000000 +0100
|
|
||||||
+++ php-7.2.4RC1/Zend/zend_portability.h 2018-03-13 12:40:25.330885880 +0100
|
|
||||||
@@ -144,11 +144,11 @@
|
|
||||||
# endif
|
|
||||||
|
|
||||||
# if defined(RTLD_GROUP) && defined(RTLD_WORLD) && defined(RTLD_PARENT)
|
|
||||||
-# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
|
|
||||||
+# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_GROUP | RTLD_WORLD | RTLD_PARENT)
|
|
||||||
# elif defined(RTLD_DEEPBIND) && !defined(__SANITIZE_ADDRESS__)
|
|
||||||
-# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL | RTLD_DEEPBIND)
|
|
||||||
+# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL | RTLD_DEEPBIND)
|
|
||||||
# else
|
|
||||||
-# define DL_LOAD(libname) dlopen(libname, RTLD_LAZY | RTLD_GLOBAL)
|
|
||||||
+# define DL_LOAD(libname) dlopen(libname, RTLD_NOW | RTLD_GLOBAL)
|
|
||||||
# endif
|
|
||||||
# define DL_UNLOAD dlclose
|
|
||||||
# if defined(DLSYM_NEEDS_UNDERSCORE)
|
|
@ -1,12 +0,0 @@
|
|||||||
diff -up php-7.2.4RC1/configure.ac.fixheader php-7.2.4RC1/configure.ac
|
|
||||||
--- php-7.2.4RC1/configure.ac.fixheader 2018-03-13 12:42:47.594623100 +0100
|
|
||||||
+++ php-7.2.4RC1/configure.ac 2018-03-13 12:43:35.591871825 +0100
|
|
||||||
@@ -1275,7 +1275,7 @@ PHP_BUILD_DATE=`date -u +%Y-%m-%d`
|
|
||||||
fi
|
|
||||||
AC_DEFINE_UNQUOTED(PHP_BUILD_DATE,"$PHP_BUILD_DATE",[PHP build date])
|
|
||||||
|
|
||||||
-PHP_UNAME=`uname -a | xargs`
|
|
||||||
+PHP_UNAME=`uname | xargs`
|
|
||||||
AC_DEFINE_UNQUOTED(PHP_UNAME,"$PHP_UNAME",[uname -a output])
|
|
||||||
PHP_OS=`uname | xargs`
|
|
||||||
AC_DEFINE_UNQUOTED(PHP_OS,"$PHP_OS",[uname output])
|
|
@ -1,280 +0,0 @@
|
|||||||
Adapted for 7.2.7 from 7.3 by remi
|
|
||||||
|
|
||||||
|
|
||||||
From 0ea4013f101d64fbeb9221260b36e98f10ed1ddd Mon Sep 17 00:00:00 2001
|
|
||||||
From: Remi Collet <remi@remirepo.net>
|
|
||||||
Date: Wed, 4 Jul 2018 08:48:38 +0200
|
|
||||||
Subject: [PATCH] Fixed bug #62596 add getallheaders (apache_request_headers)
|
|
||||||
missing function in FPM add sapi_add_request_header in public API (was
|
|
||||||
add_request_header) fix arginfo for fastcgi_finish_request fucntion
|
|
||||||
|
|
||||||
---
|
|
||||||
main/SAPI.c | 50 +++++++++++++++++++++++++++++
|
|
||||||
main/SAPI.h | 1 +
|
|
||||||
sapi/cgi/cgi_main.c | 51 +----------------------------
|
|
||||||
sapi/fpm/fpm/fpm_main.c | 25 ++++++++++++++-
|
|
||||||
sapi/fpm/tests/getallheaders.phpt | 67 +++++++++++++++++++++++++++++++++++++++
|
|
||||||
5 files changed, 143 insertions(+), 51 deletions(-)
|
|
||||||
create mode 100644 sapi/fpm/tests/getallheaders.phpt
|
|
||||||
|
|
||||||
diff --git a/main/SAPI.c b/main/SAPI.c
|
|
||||||
index b6c3329..7e0c7c8 100644
|
|
||||||
--- a/main/SAPI.c
|
|
||||||
+++ b/main/SAPI.c
|
|
||||||
@@ -1104,6 +1104,56 @@ SAPI_API void sapi_terminate_process(void) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
+SAPI_API void sapi_add_request_header(char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg) /* {{{ */
|
|
||||||
+{
|
|
||||||
+ zval *return_value = (zval*)arg;
|
|
||||||
+ char *str = NULL;
|
|
||||||
+
|
|
||||||
+ ALLOCA_FLAG(use_heap)
|
|
||||||
+
|
|
||||||
+ if (var_len > 5 &&
|
|
||||||
+ var[0] == 'H' &&
|
|
||||||
+ var[1] == 'T' &&
|
|
||||||
+ var[2] == 'T' &&
|
|
||||||
+ var[3] == 'P' &&
|
|
||||||
+ var[4] == '_') {
|
|
||||||
+
|
|
||||||
+ char *p;
|
|
||||||
+
|
|
||||||
+ var_len -= 5;
|
|
||||||
+ p = var + 5;
|
|
||||||
+ var = str = do_alloca(var_len + 1, use_heap);
|
|
||||||
+ *str++ = *p++;
|
|
||||||
+ while (*p) {
|
|
||||||
+ if (*p == '_') {
|
|
||||||
+ *str++ = '-';
|
|
||||||
+ p++;
|
|
||||||
+ if (*p) {
|
|
||||||
+ *str++ = *p++;
|
|
||||||
+ }
|
|
||||||
+ } else if (*p >= 'A' && *p <= 'Z') {
|
|
||||||
+ *str++ = (*p++ - 'A' + 'a');
|
|
||||||
+ } else {
|
|
||||||
+ *str++ = *p++;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ *str = 0;
|
|
||||||
+ } else if (var_len == sizeof("CONTENT_TYPE")-1 &&
|
|
||||||
+ memcmp(var, "CONTENT_TYPE", sizeof("CONTENT_TYPE")-1) == 0) {
|
|
||||||
+ var = "Content-Type";
|
|
||||||
+ } else if (var_len == sizeof("CONTENT_LENGTH")-1 &&
|
|
||||||
+ memcmp(var, "CONTENT_LENGTH", sizeof("CONTENT_LENGTH")-1) == 0) {
|
|
||||||
+ var = "Content-Length";
|
|
||||||
+ } else {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+ add_assoc_stringl_ex(return_value, var, var_len, val, val_len);
|
|
||||||
+ if (str) {
|
|
||||||
+ free_alloca(var, use_heap);
|
|
||||||
+ }
|
|
||||||
+}
|
|
||||||
+/* }}} */
|
|
||||||
+
|
|
||||||
/*
|
|
||||||
* Local variables:
|
|
||||||
* tab-width: 4
|
|
||||||
diff --git a/main/SAPI.h b/main/SAPI.h
|
|
||||||
index f829fd7..4b8e223 100644
|
|
||||||
--- a/main/SAPI.h
|
|
||||||
+++ b/main/SAPI.h
|
|
||||||
@@ -151,6 +151,7 @@ SAPI_API void sapi_shutdown(void);
|
|
||||||
SAPI_API void sapi_activate(void);
|
|
||||||
SAPI_API void sapi_deactivate(void);
|
|
||||||
SAPI_API void sapi_initialize_empty_request(void);
|
|
||||||
+SAPI_API void sapi_add_request_header(char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg);
|
|
||||||
END_EXTERN_C()
|
|
||||||
|
|
||||||
/*
|
|
||||||
diff --git a/sapi/cgi/cgi_main.c b/sapi/cgi/cgi_main.c
|
|
||||||
index 2e9cefe..350846d 100644
|
|
||||||
--- a/sapi/cgi/cgi_main.c
|
|
||||||
+++ b/sapi/cgi/cgi_main.c
|
|
||||||
@@ -1591,54 +1591,6 @@ PHP_FUNCTION(apache_child_terminate) /*
|
|
||||||
}
|
|
||||||
/* }}} */
|
|
||||||
|
|
||||||
-static void add_request_header(char *var, unsigned int var_len, char *val, unsigned int val_len, void *arg) /* {{{ */
|
|
||||||
-{
|
|
||||||
- zval *return_value = (zval*)arg;
|
|
||||||
- char *str = NULL;
|
|
||||||
- char *p;
|
|
||||||
- ALLOCA_FLAG(use_heap)
|
|
||||||
-
|
|
||||||
- if (var_len > 5 &&
|
|
||||||
- var[0] == 'H' &&
|
|
||||||
- var[1] == 'T' &&
|
|
||||||
- var[2] == 'T' &&
|
|
||||||
- var[3] == 'P' &&
|
|
||||||
- var[4] == '_') {
|
|
||||||
-
|
|
||||||
- var_len -= 5;
|
|
||||||
- p = var + 5;
|
|
||||||
- var = str = do_alloca(var_len + 1, use_heap);
|
|
||||||
- *str++ = *p++;
|
|
||||||
- while (*p) {
|
|
||||||
- if (*p == '_') {
|
|
||||||
- *str++ = '-';
|
|
||||||
- p++;
|
|
||||||
- if (*p) {
|
|
||||||
- *str++ = *p++;
|
|
||||||
- }
|
|
||||||
- } else if (*p >= 'A' && *p <= 'Z') {
|
|
||||||
- *str++ = (*p++ - 'A' + 'a');
|
|
||||||
- } else {
|
|
||||||
- *str++ = *p++;
|
|
||||||
- }
|
|
||||||
- }
|
|
||||||
- *str = 0;
|
|
||||||
- } else if (var_len == sizeof("CONTENT_TYPE")-1 &&
|
|
||||||
- memcmp(var, "CONTENT_TYPE", sizeof("CONTENT_TYPE")-1) == 0) {
|
|
||||||
- var = "Content-Type";
|
|
||||||
- } else if (var_len == sizeof("CONTENT_LENGTH")-1 &&
|
|
||||||
- memcmp(var, "CONTENT_LENGTH", sizeof("CONTENT_LENGTH")-1) == 0) {
|
|
||||||
- var = "Content-Length";
|
|
||||||
- } else {
|
|
||||||
- return;
|
|
||||||
- }
|
|
||||||
- add_assoc_stringl_ex(return_value, var, var_len, val, val_len);
|
|
||||||
- if (str) {
|
|
||||||
- free_alloca(var, use_heap);
|
|
||||||
- }
|
|
||||||
-}
|
|
||||||
-/* }}} */
|
|
||||||
-
|
|
||||||
PHP_FUNCTION(apache_request_headers) /* {{{ */
|
|
||||||
{
|
|
||||||
if (zend_parse_parameters_none()) {
|
|
||||||
@@ -1648,7 +1600,7 @@ PHP_FUNCTION(apache_request_headers) /*
|
|
||||||
if (fcgi_is_fastcgi()) {
|
|
||||||
fcgi_request *request = (fcgi_request*) SG(server_context);
|
|
||||||
|
|
||||||
- fcgi_loadenv(request, add_request_header, return_value);
|
|
||||||
+ fcgi_loadenv(request, sapi_add_request_header, return_value);
|
|
||||||
} else {
|
|
||||||
char buf[128];
|
|
||||||
char **env, *p, *q, *var, *val, *t = buf;
|
|
||||||
diff --git a/sapi/fpm/fpm/fpm_main.c b/sapi/fpm/fpm/fpm_main.c
|
|
||||||
index 3256660..e815be4 100644
|
|
||||||
--- a/sapi/fpm/fpm/fpm_main.c
|
|
||||||
+++ b/sapi/fpm/fpm/fpm_main.c
|
|
||||||
@@ -1533,6 +1533,10 @@ PHP_FUNCTION(fastcgi_finish_request) /* {{{ */
|
|
||||||
{
|
|
||||||
fcgi_request *request = (fcgi_request*) SG(server_context);
|
|
||||||
|
|
||||||
+ if (zend_parse_parameters_none() == FAILURE) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
if (!fcgi_is_closed(request)) {
|
|
||||||
php_output_end_all();
|
|
||||||
php_header();
|
|
||||||
@@ -1547,8 +1551,27 @@ PHP_FUNCTION(fastcgi_finish_request) /* {{{ */
|
|
||||||
}
|
|
||||||
/* }}} */
|
|
||||||
|
|
||||||
+ZEND_BEGIN_ARG_INFO(cgi_fcgi_sapi_no_arginfo, 0)
|
|
||||||
+ZEND_END_ARG_INFO()
|
|
||||||
+
|
|
||||||
+PHP_FUNCTION(apache_request_headers) /* {{{ */
|
|
||||||
+{
|
|
||||||
+ fcgi_request *request;
|
|
||||||
+
|
|
||||||
+ if (zend_parse_parameters_none() == FAILURE) {
|
|
||||||
+ return;
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ array_init(return_value);
|
|
||||||
+ if ((request = (fcgi_request*) SG(server_context))) {
|
|
||||||
+ fcgi_loadenv(request, sapi_add_request_header, return_value);
|
|
||||||
+ }
|
|
||||||
+} /* }}} */
|
|
||||||
+
|
|
||||||
static const zend_function_entry cgi_fcgi_sapi_functions[] = {
|
|
||||||
- PHP_FE(fastcgi_finish_request, NULL)
|
|
||||||
+ PHP_FE(fastcgi_finish_request, cgi_fcgi_sapi_no_arginfo)
|
|
||||||
+ PHP_FE(apache_request_headers, cgi_fcgi_sapi_no_arginfo)
|
|
||||||
+ PHP_FALIAS(getallheaders, apache_request_headers, cgi_fcgi_sapi_no_arginfo)
|
|
||||||
PHP_FE_END
|
|
||||||
};
|
|
||||||
|
|
||||||
diff --git a/sapi/fpm/tests/getallheaders.phpt b/sapi/fpm/tests/getallheaders.phpt
|
|
||||||
new file mode 100644
|
|
||||||
index 0000000..b41f1c6
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/sapi/fpm/tests/getallheaders.phpt
|
|
||||||
@@ -0,0 +1,67 @@
|
|
||||||
+--TEST--
|
|
||||||
+FPM: Function getallheaders basic test
|
|
||||||
+--SKIPIF--
|
|
||||||
+<?php include "skipif.inc"; ?>
|
|
||||||
+--FILE--
|
|
||||||
+<?php
|
|
||||||
+
|
|
||||||
+require_once "tester.inc";
|
|
||||||
+
|
|
||||||
+$cfg = <<<EOT
|
|
||||||
+[global]
|
|
||||||
+error_log = {{FILE:LOG}}
|
|
||||||
+[unconfined]
|
|
||||||
+listen = {{ADDR}}
|
|
||||||
+pm = dynamic
|
|
||||||
+pm.max_children = 5
|
|
||||||
+pm.start_servers = 1
|
|
||||||
+pm.min_spare_servers = 1
|
|
||||||
+pm.max_spare_servers = 3
|
|
||||||
+EOT;
|
|
||||||
+
|
|
||||||
+$code = <<<EOT
|
|
||||||
+<?php
|
|
||||||
+echo "Test Start\n";
|
|
||||||
+var_dump(getallheaders());
|
|
||||||
+echo "Test End\n";
|
|
||||||
+EOT;
|
|
||||||
+
|
|
||||||
+$headers = [];
|
|
||||||
+$tester = new FPM\Tester($cfg, $code);
|
|
||||||
+$tester->start();
|
|
||||||
+$tester->expectLogStartNotices();
|
|
||||||
+$tester->request(
|
|
||||||
+ '',
|
|
||||||
+ [
|
|
||||||
+ 'HTTP_X_FOO' => 'BAR',
|
|
||||||
+ 'HTTP_FOO' => 'foo'
|
|
||||||
+ ]
|
|
||||||
+ )->expectBody(
|
|
||||||
+ [
|
|
||||||
+ 'Test Start',
|
|
||||||
+ 'array(4) {',
|
|
||||||
+ ' ["Foo"]=>',
|
|
||||||
+ ' string(3) "foo"',
|
|
||||||
+ ' ["X-Foo"]=>',
|
|
||||||
+ ' string(3) "BAR"',
|
|
||||||
+ ' ["Content-Length"]=>',
|
|
||||||
+ ' string(1) "0"',
|
|
||||||
+ ' ["Content-Type"]=>',
|
|
||||||
+ ' string(0) ""',
|
|
||||||
+ '}',
|
|
||||||
+ 'Test End',
|
|
||||||
+ ]
|
|
||||||
+ );
|
|
||||||
+$tester->terminate();
|
|
||||||
+$tester->expectLogTerminatingNotices();
|
|
||||||
+$tester->close();
|
|
||||||
+
|
|
||||||
+?>
|
|
||||||
+Done
|
|
||||||
+--EXPECT--
|
|
||||||
+Done
|
|
||||||
+--CLEAN--
|
|
||||||
+<?php
|
|
||||||
+require_once "tester.inc";
|
|
||||||
+FPM\Tester::clean();
|
|
||||||
+?>
|
|
||||||
--
|
|
||||||
2.1.4
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
|||||||
|
|
||||||
<IfModule !mod_php5.c>
|
|
||||||
<IfModule !prefork.c>
|
|
||||||
# ZTS module is not supported, so FPM is preferred
|
|
||||||
# LoadModule php7_module modules/libphp7-zts.so
|
|
||||||
</IfModule>
|
|
||||||
</IfModule>
|
|
@ -18,4 +18,10 @@
|
|||||||
%__php %{_bindir}/php
|
%__php %{_bindir}/php
|
||||||
%__ztsphp %{_bindir}/zts-php
|
%__ztsphp %{_bindir}/zts-php
|
||||||
|
|
||||||
|
%__phpize %{_bindir}/phpize
|
||||||
|
%__ztsphpize %{_bindir}/zts-phpize
|
||||||
|
|
||||||
|
%__phpconfig %{_bindir}/php-config
|
||||||
|
%__ztsphpconfig %{_bindir}/zts-php-config
|
||||||
|
|
||||||
%pecl_xmldir %{_sharedstatedir}/php/peclxml
|
%pecl_xmldir %{_sharedstatedir}/php/peclxml
|
98
php-7.4.0-datetests.patch
Normal file
98
php-7.4.0-datetests.patch
Normal file
@ -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--
|
||||||
|
<?php
|
||||||
|
$zones = array(
|
||||||
|
- "CST6CDT", "Cuba", "Egypt", "Eire", "EST5EDT", "Factory", "GB-Eire",
|
||||||
|
+ "CST6CDT", "Cuba", "Egypt", "Eire", "EST5EDT", "GB-Eire",
|
||||||
|
"GMT0", "Greenwich", "Hongkong", "Iceland", "Iran", "Israel", "Jamaica",
|
||||||
|
"Japan", "Kwajalein", "Libya", "MST7MDT", "Navajo", "NZ-CHAT", "Poland",
|
||||||
|
"Portugal", "PST8PDT", "Singapore", "Turkey", "Universal", "W-SU",
|
||||||
|
@@ -45,11 +45,6 @@ DateTimeZone Object
|
||||||
|
)
|
||||||
|
DateTimeZone Object
|
||||||
|
(
|
||||||
|
- [timezone_type] => 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"
|
@ -5,10 +5,9 @@ mod_php is build twice
|
|||||||
- as ZTS using --enable-maintainer-zts
|
- as ZTS using --enable-maintainer-zts
|
||||||
|
|
||||||
diff --git a/sapi/apache2handler/config.m4 b/sapi/apache2handler/config.m4
|
diff --git a/sapi/apache2handler/config.m4 b/sapi/apache2handler/config.m4
|
||||||
index 2e64b21..ec4799f 100644
|
|
||||||
--- a/sapi/apache2handler/config.m4
|
--- a/sapi/apache2handler/config.m4
|
||||||
+++ b/sapi/apache2handler/config.m4
|
+++ b/sapi/apache2handler/config.m4
|
||||||
@@ -116,17 +116,6 @@ if test "$PHP_APXS2" != "no"; then
|
@@ -105,17 +105,6 @@ if test "$PHP_APXS2" != "no"; then
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@ -18,7 +17,7 @@ index 2e64b21..ec4799f 100644
|
|||||||
- PHP_BUILD_THREAD_SAFE
|
- PHP_BUILD_THREAD_SAFE
|
||||||
- fi
|
- fi
|
||||||
- else
|
- else
|
||||||
- APACHE_THREADED_MPM=`$APXS_HTTPD -V | grep 'threaded:.*yes'`
|
- APACHE_THREADED_MPM=`$APXS_HTTPD -V 2>/dev/null | grep 'threaded:.*yes'`
|
||||||
- if test -n "$APACHE_THREADED_MPM"; then
|
- if test -n "$APACHE_THREADED_MPM"; then
|
||||||
- PHP_BUILD_THREAD_SAFE
|
- PHP_BUILD_THREAD_SAFE
|
||||||
- fi
|
- fi
|
@ -1,12 +1,12 @@
|
|||||||
|
|
||||||
Use -lldap_r by default.
|
Use -lldap_r by default.
|
||||||
|
|
||||||
diff -up php-7.2.3RC1/ext/ldap/config.m4.ldap_r php-7.2.3RC1/ext/ldap/config.m4
|
diff -up php-7.4.0RC2/ext/ldap/config.m4.ldap_r php-7.4.0RC2/ext/ldap/config.m4
|
||||||
--- php-7.2.3RC1/ext/ldap/config.m4.ldap_r 2018-02-14 06:05:11.553142812 +0100
|
--- php-7.4.0RC2/ext/ldap/config.m4.ldap_r 2019-09-17 10:21:24.769200812 +0200
|
||||||
+++ php-7.2.3RC1/ext/ldap/config.m4 2018-02-14 06:07:31.179816122 +0100
|
+++ php-7.4.0RC2/ext/ldap/config.m4 2019-09-17 10:21:30.658181771 +0200
|
||||||
@@ -119,7 +119,11 @@ if test "$PHP_LDAP" != "no"; then
|
@@ -68,7 +68,11 @@ if test "$PHP_LDAP" != "no"; then
|
||||||
|
dnl -pc removal is a hack for clang
|
||||||
MACHINE_INCLUDES=$($CC -dumpmachine)
|
MACHINE_INCLUDES=$($CC -dumpmachine | $SED 's/-pc//')
|
||||||
|
|
||||||
- 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/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
|
+ if test -f $LDAP_LIBDIR/libldap_r.$SHLIB_SUFFIX_NAME; then
|
65
php-7.4.0-phpize.patch
Normal file
65
php-7.4.0-phpize.patch
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
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
|
||||||
|
@@ -166,6 +166,15 @@ phpize_autotools()
|
||||||
|
$PHP_AUTOHEADER || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
+phpize_check_headers()
|
||||||
|
+{
|
||||||
|
+ if test ! -f $includedir/main/php.h; then
|
||||||
|
+ echo "Can't find PHP headers in $includedir"
|
||||||
|
+ echo "The php-devel package is required for use of this command."
|
||||||
|
+ exit 1
|
||||||
|
+ fi
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
# Main script
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
@@ -184,12 +193,15 @@ case "$1" in
|
||||||
|
|
||||||
|
# Version
|
||||||
|
--version|-v)
|
||||||
|
+ phpize_check_headers
|
||||||
|
phpize_print_api_numbers
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
|
||||||
|
# Default
|
||||||
|
*)
|
||||||
|
+ phpize_check_headers
|
||||||
|
+
|
||||||
|
phpize_check_configm4 0
|
||||||
|
|
||||||
|
phpize_check_build_files
|
||||||
|
From c454f120857df6f771c5475bf1fcc99e683b87dc Mon Sep 17 00:00:00 2001
|
||||||
|
From: Remi Collet <remi@remirepo.net>
|
||||||
|
Date: Thu, 7 Sep 2023 09:56:51 +0200
|
||||||
|
Subject: [PATCH] also display PHP version in phpize
|
||||||
|
|
||||||
|
---
|
||||||
|
scripts/phpize.in | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/scripts/phpize.in b/scripts/phpize.in
|
||||||
|
index 7d9c1df14c8e..81605e06a590 100644
|
||||||
|
--- a/scripts/phpize.in
|
||||||
|
+++ b/scripts/phpize.in
|
||||||
|
@@ -59,6 +59,8 @@ phpize_check_configm4()
|
||||||
|
phpize_get_api_numbers()
|
||||||
|
{
|
||||||
|
# extracting API NOs:
|
||||||
|
+ PHP_MINOR_VERSION=`grep '#define PHP_MINOR_VERSION' $includedir/main/php_version.h|$SED 's/#define PHP_MINOR_VERSION //'`
|
||||||
|
+ PHP_MAJOR_VERSION=`grep '#define PHP_MAJOR_VERSION' $includedir/main/php_version.h|$SED 's/#define PHP_MAJOR_VERSION//'`
|
||||||
|
PHP_API_VERSION=`grep '#define PHP_API_VERSION' $includedir/main/php.h|$SED 's/#define PHP_API_VERSION//'`
|
||||||
|
ZEND_MODULE_API_NO=`grep '#define ZEND_MODULE_API_NO' $includedir/Zend/zend_modules.h|$SED 's/#define ZEND_MODULE_API_NO//'`
|
||||||
|
ZEND_EXTENSION_API_NO=`grep '#define ZEND_EXTENSION_API_NO' $includedir/Zend/zend_extensions.h|$SED 's/#define ZEND_EXTENSION_API_NO//'`
|
||||||
|
@@ -68,6 +70,7 @@ phpize_print_api_numbers()
|
||||||
|
{
|
||||||
|
phpize_get_api_numbers
|
||||||
|
echo "Configuring for:"
|
||||||
|
+ echo "PHP Version: ${PHP_MAJOR_VERSION}.${PHP_MINOR_VERSION}"
|
||||||
|
echo "PHP Api Version: "$PHP_API_VERSION
|
||||||
|
echo "Zend Module Api No: "$ZEND_MODULE_API_NO
|
||||||
|
echo "Zend Extension Api No: "$ZEND_EXTENSION_API_NO
|
@ -1,24 +1,25 @@
|
|||||||
--- php-5.6.3/sapi/embed/config.m4.embed
|
diff -up ./sapi/embed/config.m4.embed ./sapi/embed/config.m4
|
||||||
+++ php-5.6.3/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
|
||||||
@@ -12,7 +12,8 @@ if test "$PHP_EMBED" != "no"; then
|
@@ -12,7 +12,8 @@ if test "$PHP_EMBED" != "no"; then
|
||||||
case "$PHP_EMBED" in
|
|
||||||
yes|shared)
|
yes|shared)
|
||||||
|
LIBPHP_CFLAGS="-shared"
|
||||||
PHP_EMBED_TYPE=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)\$(prefix)/lib; \$(INSTALL) -m 0755 $SAPI_SHARED \$(INSTALL_ROOT)\$(prefix)/lib"
|
||||||
+ EXTRA_LDFLAGS="$EXTRA_LDFLAGS -release \$(PHP_MAJOR_VERSION).\$(PHP_MINOR_VERSION)"
|
+ 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)"
|
+ INSTALL_IT="\$(mkinstalldirs) \$(INSTALL_ROOT)\$(libdir); \$(LIBTOOL) --mode=install \$(INSTALL) -m 0755 \$(OVERALL_TARGET) \$(INSTALL_ROOT)\$(libdir)"
|
||||||
;;
|
;;
|
||||||
static)
|
static)
|
||||||
PHP_EMBED_TYPE=static
|
LIBPHP_CFLAGS="-static"
|
||||||
diff -up php-5.5.30/scripts/php-config.in.old php-5.5.30/scripts/php-config.in
|
diff -up ./scripts/php-config.in.embed ./scripts/php-config.in
|
||||||
--- php-5.5.30/scripts/php-config.in.old 2015-10-19 15:17:31.944747715 +0200
|
--- ./scripts/php-config.in.embed 2020-07-07 12:54:42.000000000 +0200
|
||||||
+++ php-5.5.30/scripts/php-config.in 2015-10-19 15:17:58.278858083 +0200
|
+++ ./scripts/php-config.in 2020-07-07 13:51:05.880764968 +0200
|
||||||
@@ -18,7 +18,7 @@ exe_extension="@EXEEXT@"
|
@@ -18,7 +18,7 @@ exe_extension="@EXEEXT@"
|
||||||
php_cli_binary=NONE
|
php_cli_binary=NONE
|
||||||
php_cgi_binary=NONE
|
php_cgi_binary=NONE
|
||||||
configure_options="@CONFIGURE_OPTIONS@"
|
configure_options="@CONFIGURE_OPTIONS@"
|
||||||
-php_sapis="@PHP_INSTALLED_SAPIS@"
|
-php_sapis="@PHP_INSTALLED_SAPIS@"
|
||||||
+php_sapis="apache2handler embed fpm @PHP_INSTALLED_SAPIS@"
|
+php_sapis="apache2handler litespeed fpm phpdbg @PHP_INSTALLED_SAPIS@"
|
||||||
|
ini_dir="@EXPANDED_PHP_CONFIG_FILE_SCAN_DIR@"
|
||||||
|
ini_path="@EXPANDED_PHP_CONFIG_FILE_PATH@"
|
||||||
|
|
||||||
# Set php_cli_binary and php_cgi_binary if available
|
|
||||||
for sapi in $php_sapis; do
|
|
@ -1,7 +1,7 @@
|
|||||||
diff -up php-7.2.0alpha0/ext/dba/config.m4.libdb php-7.2.0alpha0/ext/dba/config.m4
|
diff -up ./ext/dba/config.m4.libdb ./ext/dba/config.m4
|
||||||
--- php-7.2.0alpha0/ext/dba/config.m4.libdb 2017-05-29 08:56:06.000000000 +0200
|
--- ./ext/dba/config.m4.libdb 2020-04-09 14:06:11.000000000 +0200
|
||||||
+++ php-7.2.0alpha0/ext/dba/config.m4 2017-05-29 09:13:52.014823282 +0200
|
+++ ./ext/dba/config.m4 2020-04-09 14:35:08.208605065 +0200
|
||||||
@@ -346,61 +346,13 @@ if test "$PHP_DB4" != "no"; then
|
@@ -375,61 +375,13 @@ if test "$PHP_DB4" != "no"; then
|
||||||
dbdp4="/usr/local/BerkeleyDB.4."
|
dbdp4="/usr/local/BerkeleyDB.4."
|
||||||
dbdp5="/usr/local/BerkeleyDB.5."
|
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
|
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
|
||||||
@ -65,24 +65,24 @@ diff -up php-7.2.0alpha0/ext/dba/config.m4.libdb php-7.2.0alpha0/ext/dba/config.
|
|||||||
fi
|
fi
|
||||||
PHP_DBA_STD_RESULT(db4,Berkeley DB4)
|
PHP_DBA_STD_RESULT(db4,Berkeley DB4)
|
||||||
|
|
||||||
diff -up php-7.2.0alpha0/ext/dba/dba.c.libdb php-7.2.0alpha0/ext/dba/dba.c
|
diff -up ./ext/dba/dba.c.libdb ./ext/dba/dba.c
|
||||||
--- php-7.2.0alpha0/ext/dba/dba.c.libdb 2017-05-29 09:16:15.736628202 +0200
|
--- ./ext/dba/dba.c.libdb 2020-04-09 14:06:11.000000000 +0200
|
||||||
+++ php-7.2.0alpha0/ext/dba/dba.c 2017-05-29 09:16:20.494654746 +0200
|
+++ ./ext/dba/dba.c 2020-04-09 14:36:30.593275190 +0200
|
||||||
@@ -53,6 +53,10 @@
|
@@ -50,6 +50,10 @@
|
||||||
#include "php_tcadb.h"
|
|
||||||
#include "php_lmdb.h"
|
#include "php_lmdb.h"
|
||||||
|
#include "dba_arginfo.h"
|
||||||
|
|
||||||
+#ifdef DB4_INCLUDE_FILE
|
+#ifdef DB4_INCLUDE_FILE
|
||||||
+#include DB4_INCLUDE_FILE
|
+#include DB4_INCLUDE_FILE
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
/* {{{ arginfo */
|
PHP_MINIT_FUNCTION(dba);
|
||||||
ZEND_BEGIN_ARG_INFO_EX(arginfo_dba_popen, 0, 0, 2)
|
PHP_MSHUTDOWN_FUNCTION(dba);
|
||||||
ZEND_ARG_INFO(0, path)
|
PHP_MINFO_FUNCTION(dba);
|
||||||
@@ -558,6 +562,10 @@ PHP_MINFO_FUNCTION(dba)
|
@@ -452,6 +456,10 @@ PHP_MINFO_FUNCTION(dba)
|
||||||
|
|
||||||
php_info_print_table_start();
|
php_info_print_table_start();
|
||||||
php_info_print_table_row(2, "DBA support", "enabled");
|
php_info_print_table_row(2, "DBA support", "enabled");
|
||||||
+#ifdef DB_VERSION_STRING
|
+#ifdef DB_VERSION_STRING
|
||||||
+ php_info_print_table_row(2, "libdb header version", DB_VERSION_STRING);
|
+ php_info_print_table_row(2, "libdb header version", DB_VERSION_STRING);
|
||||||
+ php_info_print_table_row(2, "libdb library version", db_version(NULL, NULL, NULL));
|
+ php_info_print_table_row(2, "libdb library version", db_version(NULL, NULL, NULL));
|
44
php-8.1.0-phpinfo.patch
Normal file
44
php-8.1.0-phpinfo.patch
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
|
||||||
|
Drop "Configure Command" from phpinfo as it doesn't
|
||||||
|
provide any useful information.
|
||||||
|
The available extensions are not related to this command.
|
||||||
|
|
||||||
|
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
|
||||||
|
#ifdef PHP_BUILD_ARCH
|
||||||
|
php_info_print_table_row(2, "Architecture", PHP_BUILD_ARCH);
|
||||||
|
#endif
|
||||||
|
-#ifdef CONFIGURE_COMMAND
|
||||||
|
- php_info_print_table_row(2, "Configure Command", CONFIGURE_COMMAND );
|
||||||
|
-#endif
|
||||||
|
|
||||||
|
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
|
||||||
|
@@ -17,7 +17,6 @@ PHP Version => %s
|
||||||
|
|
||||||
|
System => %s
|
||||||
|
Build Date => %s%a
|
||||||
|
-Configure Command => %s
|
||||||
|
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"
|
||||||
|
#endif
|
||||||
|
#ifdef PHP_BUILD_COMPILER
|
||||||
|
- " " PHP_BUILD_COMPILER
|
||||||
|
+ " gcc"
|
||||||
|
#endif
|
||||||
|
#ifdef PHP_BUILD_ARCH
|
||||||
|
" " PHP_BUILD_ARCH
|
47
php-8.3.0-openssl-ec-param.patch
Normal file
47
php-8.3.0-openssl-ec-param.patch
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
From 21f9d16e130b412b6839494dcf30a2f1d7dcee0f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Remi Collet <remi@remirepo.net>
|
||||||
|
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
|
||||||
|
|
@ -5,7 +5,14 @@ Add support for use of the system timezone database, rather
|
|||||||
than embedding a copy. Discussed upstream but was not desired.
|
than embedding a copy. Discussed upstream but was not desired.
|
||||||
|
|
||||||
History:
|
History:
|
||||||
r17: adapt for autotool change in 7.2.16RC1
|
f24: 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)
|
||||||
|
r20: adapt for timelib 2020.03 (in 8.0.10RC1)
|
||||||
|
r19: adapt for timelib 2020.02 (in 8.0.0beta2)
|
||||||
|
r18: adapt for autotool change in 7.3.3RC1
|
||||||
|
r17: adapt for timelib 2018.01 (in 7.3.2RC1)
|
||||||
r16: adapt for timelib 2017.06 (in 7.2.3RC1)
|
r16: adapt for timelib 2017.06 (in 7.2.3RC1)
|
||||||
r15: adapt for timelib 2017.05beta7 (in 7.2.0RC1)
|
r15: adapt for timelib 2017.05beta7 (in 7.2.0RC1)
|
||||||
r14: improve check for valid tz file
|
r14: improve check for valid tz file
|
||||||
@ -28,10 +35,12 @@ r3: fix a crash if /usr/share/zoneinfo doesn't exist (Raphael Geissert)
|
|||||||
r2: add filesystem trawl to set up name alias index
|
r2: add filesystem trawl to set up name alias index
|
||||||
r1: initial revision
|
r1: initial revision
|
||||||
|
|
||||||
diff -up php-7.2.16RC1/ext/date/config0.m4.systzdata php-7.2.16RC1/ext/date/config0.m4
|
|
||||||
--- php-7.2.16RC1/ext/date/config0.m4.systzdata 2019-02-19 11:22:22.223741585 +0100
|
diff --git a/ext/date/config0.m4 b/ext/date/config0.m4
|
||||||
+++ php-7.2.16RC1/ext/date/config0.m4 2019-02-19 11:23:05.089111556 +0100
|
index 6b803bf33e..53c3cdb3f4 100644
|
||||||
@@ -10,6 +10,19 @@ io.h
|
--- a/ext/date/config0.m4
|
||||||
|
+++ b/ext/date/config0.m4
|
||||||
|
@@ -4,6 +4,19 @@ AC_CHECK_HEADERS([io.h])
|
||||||
dnl Check for strtoll, atoll
|
dnl Check for strtoll, atoll
|
||||||
AC_CHECK_FUNCS(strtoll atoll)
|
AC_CHECK_FUNCS(strtoll atoll)
|
||||||
|
|
||||||
@ -48,13 +57,14 @@ diff -up php-7.2.16RC1/ext/date/config0.m4.systzdata php-7.2.16RC1/ext/date/conf
|
|||||||
+ fi
|
+ fi
|
||||||
+fi
|
+fi
|
||||||
+
|
+
|
||||||
PHP_DATE_CFLAGS="-I@ext_builddir@/lib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DHAVE_TIMELIB_CONFIG_H=1"
|
PHP_DATE_CFLAGS="-Wno-implicit-fallthrough -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
|
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"
|
lib/timelib.c lib/tm2unixtime.c lib/unixtime2tm.c lib/parse_iso_intervals.c lib/interval.c"
|
||||||
diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/lib/parse_tz.c
|
diff --git a/ext/date/lib/parse_tz.c b/ext/date/lib/parse_tz.c
|
||||||
--- php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata 2019-02-19 11:13:22.000000000 +0100
|
index c7f93580d7..ec196a98b6 100644
|
||||||
+++ php-7.2.16RC1/ext/date/lib/parse_tz.c 2019-02-19 11:19:40.245313535 +0100
|
--- a/ext/date/lib/parse_tz.c
|
||||||
@@ -25,8 +25,21 @@
|
+++ b/ext/date/lib/parse_tz.c
|
||||||
|
@@ -26,9 +26,33 @@
|
||||||
#include "timelib.h"
|
#include "timelib.h"
|
||||||
#include "timelib_private.h"
|
#include "timelib_private.h"
|
||||||
|
|
||||||
@ -67,8 +77,20 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
+
|
+
|
||||||
+#include "php_scandir.h"
|
+#include "php_scandir.h"
|
||||||
+
|
+
|
||||||
|
+static const unsigned char internal_utc[] = {
|
||||||
|
+ 0x54, 0x5a, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
+ 0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x54, 0x5a, 0x69, 0x66, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||||
|
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
|
||||||
|
+ 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x55, 0x54, 0x43, 0x00, 0x0a, 0x55, 0x54, 0x43,
|
||||||
|
+ 0x30, 0x0a
|
||||||
|
+};
|
||||||
|
+
|
||||||
+#else
|
+#else
|
||||||
#define TIMELIB_SUPPORTS_V2DATA
|
#define TIMELIB_SUPPORTS_V2DATA
|
||||||
|
#define TIMELIB_SUPPORT_SLIM_FILE
|
||||||
#include "timezonedb.h"
|
#include "timezonedb.h"
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
@ -76,7 +98,7 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
|
|
||||||
#if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__))
|
#if (defined(__APPLE__) || defined(__APPLE_CC__)) && (defined(__BIG_ENDIAN__) || defined(__LITTLE_ENDIAN__))
|
||||||
# if defined(__LITTLE_ENDIAN__)
|
# if defined(__LITTLE_ENDIAN__)
|
||||||
@@ -67,6 +80,11 @@ static int read_php_preamble(const unsig
|
@@ -95,6 +119,11 @@ static int read_php_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
|
||||||
{
|
{
|
||||||
uint32_t version;
|
uint32_t version;
|
||||||
|
|
||||||
@ -88,11 +110,11 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
/* read ID */
|
/* read ID */
|
||||||
version = (*tzf)[3] - '0';
|
version = (*tzf)[3] - '0';
|
||||||
*tzf += 4;
|
*tzf += 4;
|
||||||
@@ -374,7 +392,429 @@ void timelib_dump_tzinfo(timelib_tzinfo
|
@@ -577,7 +606,475 @@ void timelib_dump_tzinfo(timelib_tzinfo *tz)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
-static int seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb)
|
-static int seek_to_tz_position(const unsigned char **tzf, const char *timezone, const timelib_tzdb *tzdb)
|
||||||
+#ifdef HAVE_SYSTEM_TZDATA
|
+#ifdef HAVE_SYSTEM_TZDATA
|
||||||
+
|
+
|
||||||
+#ifdef HAVE_SYSTEM_TZDATA_PREFIX
|
+#ifdef HAVE_SYSTEM_TZDATA_PREFIX
|
||||||
@ -318,6 +340,44 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
+ return timelib_strcasecmp(alpha->id, beta->id);
|
+ return timelib_strcasecmp(alpha->id, beta->id);
|
||||||
+}
|
+}
|
||||||
+
|
+
|
||||||
|
+/* Retrieve tzdata version. */
|
||||||
|
+static void retrieve_zone_version(timelib_tzdb *db)
|
||||||
|
+{
|
||||||
|
+ static char buf[30];
|
||||||
|
+ char path[PATH_MAX];
|
||||||
|
+ FILE *fp;
|
||||||
|
+
|
||||||
|
+ strncpy(path, ZONEINFO_PREFIX "/tzdata.zi", sizeof(path));
|
||||||
|
+
|
||||||
|
+ fp = fopen(path, "r");
|
||||||
|
+ if (fp) {
|
||||||
|
+ if (fgets(buf, sizeof(buf), fp)) {
|
||||||
|
+ if (!memcmp(buf, "# version ", 10) &&
|
||||||
|
+ isdigit(buf[10]) &&
|
||||||
|
+ isdigit(buf[11]) &&
|
||||||
|
+ isdigit(buf[12]) &&
|
||||||
|
+ isdigit(buf[13]) &&
|
||||||
|
+ islower(buf[14])) {
|
||||||
|
+ if (buf[14] >= 't') { /* 2022t = 2022.20 */
|
||||||
|
+ buf[17] = 0;
|
||||||
|
+ buf[16] = buf[14] - 't' + '0';
|
||||||
|
+ buf[15] = '2';
|
||||||
|
+ } else if (buf[14] >= 'j') { /* 2022j = 2022.10 */
|
||||||
|
+ buf[17] = 0;
|
||||||
|
+ buf[16] = buf[14] - 'j' + '0';
|
||||||
|
+ buf[15] = '1';
|
||||||
|
+ } else { /* 2022a = 2022.1 */
|
||||||
|
+ buf[16] = 0;
|
||||||
|
+ buf[15] = buf[14] - 'a' + '1';
|
||||||
|
+ }
|
||||||
|
+ buf[14] = '.';
|
||||||
|
+ db->version = buf+10;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ fclose(fp);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
+
|
+
|
||||||
+/* Create the zone identifier index by trawling the filesystem. */
|
+/* Create the zone identifier index by trawling the filesystem. */
|
||||||
+static void create_zone_index(timelib_tzdb *db)
|
+static void create_zone_index(timelib_tzdb *db)
|
||||||
@ -394,6 +454,9 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
+
|
+
|
||||||
+ qsort(db_index, index_next, sizeof *db_index, sysdbcmp);
|
+ qsort(db_index, index_next, sizeof *db_index, sysdbcmp);
|
||||||
+
|
+
|
||||||
|
+ if (!index_next) {
|
||||||
|
+ db_index[index_next++].id = strdup("UTC");
|
||||||
|
+ }
|
||||||
+ db->index = db_index;
|
+ db->index = db_index;
|
||||||
+ db->index_size = index_next;
|
+ db->index_size = index_next;
|
||||||
+
|
+
|
||||||
@ -410,7 +473,7 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
+ size_t n;
|
+ size_t n;
|
||||||
+ char *data, *p;
|
+ char *data, *p;
|
||||||
+
|
+
|
||||||
+ data = malloc(3 * sysdb->index_size + 7);
|
+ data = malloc(3 * sysdb->index_size + sizeof(FAKE_HEADER) - 1);
|
||||||
+
|
+
|
||||||
+ p = mempcpy(data, FAKE_HEADER, sizeof(FAKE_HEADER) - 1);
|
+ p = mempcpy(data, FAKE_HEADER, sizeof(FAKE_HEADER) - 1);
|
||||||
+
|
+
|
||||||
@ -500,7 +563,12 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
+
|
+
|
||||||
+ fd = open(fname, O_RDONLY);
|
+ fd = open(fname, O_RDONLY);
|
||||||
+ if (fd == -1) {
|
+ if (fd == -1) {
|
||||||
+ return NULL;
|
+ if (strcmp(timezone, "UTC")) {
|
||||||
|
+ return NULL;
|
||||||
|
+ } else {
|
||||||
|
+ *length = sizeof(internal_utc);
|
||||||
|
+ return internal_utc;
|
||||||
|
+ }
|
||||||
+ } else if (fstat(fd, &st) != 0 || !is_valid_tzfile(&st, fd)) {
|
+ } else if (fstat(fd, &st) != 0 || !is_valid_tzfile(&st, fd)) {
|
||||||
+ close(fd);
|
+ close(fd);
|
||||||
+ return NULL;
|
+ return NULL;
|
||||||
@ -515,15 +583,15 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
+
|
+
|
||||||
+#endif
|
+#endif
|
||||||
+
|
+
|
||||||
+static int inmem_seek_to_tz_position(const unsigned char **tzf, char *timezone, const timelib_tzdb *tzdb)
|
+static int inmem_seek_to_tz_position(const unsigned char **tzf, const char *timezone, const timelib_tzdb *tzdb)
|
||||||
{
|
{
|
||||||
int left = 0, right = tzdb->index_size - 1;
|
int left = 0, right = tzdb->index_size - 1;
|
||||||
|
|
||||||
@@ -400,9 +840,48 @@ static int seek_to_tz_position(const uns
|
@@ -603,9 +1100,49 @@ static int seek_to_tz_position(const unsigned char **tzf, const char *timezone,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
+static int seek_to_tz_position(const unsigned char **tzf, char *timezone,
|
+static int seek_to_tz_position(const unsigned char **tzf, const char *timezone,
|
||||||
+ char **map, size_t *maplen,
|
+ char **map, size_t *maplen,
|
||||||
+ const timelib_tzdb *tzdb)
|
+ const timelib_tzdb *tzdb)
|
||||||
+{
|
+{
|
||||||
@ -553,9 +621,10 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
+ if (timezonedb_system == NULL) {
|
+ if (timezonedb_system == NULL) {
|
||||||
+ timelib_tzdb *tmp = malloc(sizeof *tmp);
|
+ timelib_tzdb *tmp = malloc(sizeof *tmp);
|
||||||
+
|
+
|
||||||
+ tmp->version = "0.system";
|
+ tmp->version = "0";
|
||||||
+ tmp->data = NULL;
|
+ tmp->data = NULL;
|
||||||
+ create_zone_index(tmp);
|
+ create_zone_index(tmp);
|
||||||
|
+ retrieve_zone_version(tmp);
|
||||||
+ system_location_table = create_location_table();
|
+ system_location_table = create_location_table();
|
||||||
+ fake_data_segment(tmp, system_location_table);
|
+ fake_data_segment(tmp, system_location_table);
|
||||||
+ timezonedb_system = tmp;
|
+ timezonedb_system = tmp;
|
||||||
@ -568,8 +637,8 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
}
|
}
|
||||||
|
|
||||||
const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_tzdb *tzdb, int *count)
|
const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_tzdb *tzdb, int *count)
|
||||||
@@ -414,7 +893,30 @@ const timelib_tzdb_index_entry *timelib_
|
@@ -617,7 +1154,32 @@ const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_
|
||||||
int timelib_timezone_id_is_valid(char *timezone, const timelib_tzdb *tzdb)
|
int timelib_timezone_id_is_valid(const char *timezone, const timelib_tzdb *tzdb)
|
||||||
{
|
{
|
||||||
const unsigned char *tzf;
|
const unsigned char *tzf;
|
||||||
- return (seek_to_tz_position(&tzf, timezone, tzdb));
|
- return (seek_to_tz_position(&tzf, timezone, tzdb));
|
||||||
@ -582,7 +651,9 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
+ if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) {
|
+ if (timezone[0] == '\0' || strstr(timezone, "..") != NULL) {
|
||||||
+ return 0;
|
+ return 0;
|
||||||
+ }
|
+ }
|
||||||
+
|
+ if (!strcmp(timezone, "UTC")) {
|
||||||
|
+ return 1;
|
||||||
|
+ }
|
||||||
+ if (system_location_table) {
|
+ if (system_location_table) {
|
||||||
+ if (find_zone_info(system_location_table, timezone) != NULL) {
|
+ if (find_zone_info(system_location_table, timezone) != NULL) {
|
||||||
+ /* found in cache */
|
+ /* found in cache */
|
||||||
@ -600,8 +671,8 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
|
static int skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
|
||||||
@@ -456,12 +958,14 @@ static timelib_tzinfo* timelib_tzinfo_ct
|
@@ -662,6 +1224,8 @@ static timelib_tzinfo* timelib_tzinfo_ctor(const char *name)
|
||||||
timelib_tzinfo *timelib_parse_tzfile(char *timezone, const timelib_tzdb *tzdb, int *error_code)
|
timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *tzdb, int *error_code)
|
||||||
{
|
{
|
||||||
const unsigned char *tzf;
|
const unsigned char *tzf;
|
||||||
+ char *memmap = NULL;
|
+ char *memmap = NULL;
|
||||||
@ -609,18 +680,19 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
timelib_tzinfo *tmp;
|
timelib_tzinfo *tmp;
|
||||||
int version;
|
int version;
|
||||||
int transitions_result, types_result;
|
int transitions_result, types_result;
|
||||||
unsigned int type; /* TIMELIB_TZINFO_PHP or TIMELIB_TZINFO_ZONEINFO */
|
@@ -669,7 +1233,7 @@ timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *t
|
||||||
|
|
||||||
|
*error_code = TIMELIB_ERROR_NO_ERROR;
|
||||||
|
|
||||||
- if (seek_to_tz_position(&tzf, timezone, tzdb)) {
|
- if (seek_to_tz_position(&tzf, timezone, tzdb)) {
|
||||||
+ if (seek_to_tz_position(&tzf, timezone, &memmap, &maplen, tzdb)) {
|
+ if (seek_to_tz_position(&tzf, timezone, &memmap, &maplen, tzdb)) {
|
||||||
tmp = timelib_tzinfo_ctor(timezone);
|
tmp = timelib_tzinfo_ctor(timezone);
|
||||||
|
|
||||||
version = read_preamble(&tzf, tmp, &type);
|
version = read_preamble(&tzf, tmp, &type);
|
||||||
@@ -484,6 +988,29 @@ timelib_tzinfo *timelib_parse_tzfile(cha
|
@@ -712,11 +1276,38 @@ timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *t
|
||||||
timelib_tzinfo_dtor(tmp);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
+
|
|
||||||
+#ifdef HAVE_SYSTEM_TZDATA
|
+#ifdef HAVE_SYSTEM_TZDATA
|
||||||
+ if (memmap) {
|
+ if (memmap) {
|
||||||
+ const struct location_info *li;
|
+ const struct location_info *li;
|
||||||
@ -640,13 +712,13 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ /* Now done with the mmap segment - discard it. */
|
+ /* Now done with the mmap segment - discard it. */
|
||||||
+ munmap(memmap, maplen);
|
+ if (memmap != internal_utc) {
|
||||||
|
+ munmap(memmap, maplen);
|
||||||
|
+ }
|
||||||
+ } else {
|
+ } else {
|
||||||
+#endif
|
+#endif
|
||||||
if (version == 2 || version == 3) {
|
if (type == TIMELIB_TZINFO_PHP) {
|
||||||
if (!skip_64bit_preamble(&tzf, tmp)) {
|
read_location(&tzf, tmp);
|
||||||
/* 64 bit preamble is not in place */
|
|
||||||
@@ -501,6 +1028,9 @@ timelib_tzinfo *timelib_parse_tzfile(cha
|
|
||||||
} else {
|
} else {
|
||||||
set_default_location_and_comments(&tzf, tmp);
|
set_default_location_and_comments(&tzf, tmp);
|
||||||
}
|
}
|
||||||
@ -656,3 +728,19 @@ diff -up php-7.2.16RC1/ext/date/lib/parse_tz.c.systzdata php-7.2.16RC1/ext/date/
|
|||||||
} else {
|
} else {
|
||||||
*error_code = TIMELIB_ERROR_NO_SUCH_TIMEZONE;
|
*error_code = TIMELIB_ERROR_NO_SUCH_TIMEZONE;
|
||||||
tmp = NULL;
|
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)
|
||||||
|
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);
|
||||||
|
+#ifdef HAVE_SYSTEM_TZDATA
|
||||||
|
+ php_info_print_table_row(2, "Timezone Database", "system");
|
||||||
|
+#else
|
||||||
|
php_info_print_table_row(2, "Timezone Database", php_date_global_timezone_db_enabled ? "external" : "internal");
|
||||||
|
+#endif
|
||||||
|
php_info_print_table_row(2, "Default timezone", guess_timezone(tzdb));
|
||||||
|
php_info_print_table_end();
|
||||||
|
|
16
php-8.3.10.tar.xz.asc
Normal file
16
php-8.3.10.tar.xz.asc
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCAAdFiEESx/A2d+SMhztn2FdvsVV4ioUNVMFAmao7zoACgkQvsVV4ioU
|
||||||
|
NVPe4A//dQyTvynxV6pjRy3LscoIX9D6y966K9YKbjQabkXm0i+RcMlF68tAlRxu
|
||||||
|
jZLNiWLRriZsr9Mjt0r/M2DvxnsHDxRBgNxRfVVRlkx1ubwtjken9GPhJQ9qYs31
|
||||||
|
EC/qMDfeaimvWtUCY7iCKMOR4WOcmD5gkmfp6/lbNE7DYGXQXkyJxqtVbjOcWBg1
|
||||||
|
3w7XL19LsA4tdWdNE9NKlSmWSLG2iJy8cAUAGx4bG24iQAUgq2T/AreQe6BZhmSZ
|
||||||
|
BGrLimqzIIUo8ytbbIKFG9MS6z9A7mMH60sHo18AoqcBnlrKacpYriLHqQDd9fCw
|
||||||
|
stQWykimGnnRqzm1YCCakM97fsGSmBHULU7FKENXGvEG+PbYCj11Pwh7+2fXTOor
|
||||||
|
mSxaldxluJARDeSlGJdQTDEO7l6m1vb9UNrfQQu23VeXekl7DJPQzkcSu5zZVmqE
|
||||||
|
hmqAo+Dcl+mfgHM7OFpLl48d+WkoP08HUMOZwDN0N/Akbo4DrbeqVf6dGNegAhDp
|
||||||
|
NKK10Zz0Y7A2STYSChpWEUb1o3XHkGNO5PKtkwghLgP+PDeehPqNY0FPcV6D4u7K
|
||||||
|
ETnkrDErA0dQGbNM3cmr+3XQT8o/fcFTHndwNTZjd3V4YkQeb3kECaiLEaswALuJ
|
||||||
|
Hh9+Aztg2Xr8lonvpXBpJHG1d2pIlQinH1LnOBdhjLubcz8QJME=
|
||||||
|
=l9LG
|
||||||
|
-----END PGP SIGNATURE-----
|
16
php-8.3.3-parser.patch
Normal file
16
php-8.3.3-parser.patch
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
diff -up ./build/gen_stub.php.syslib ./build/gen_stub.php
|
||||||
|
--- ./build/gen_stub.php.syslib 2020-06-25 08:11:51.782046813 +0200
|
||||||
|
+++ ./build/gen_stub.php 2020-06-25 08:13:11.188860368 +0200
|
||||||
|
@@ -3265,6 +3265,12 @@ function initPhpParser() {
|
||||||
|
}
|
||||||
|
|
||||||
|
$isInitialized = true;
|
||||||
|
+
|
||||||
|
+ if (file_exists('/usr/share/php/PhpParser5/autoload.php')) {
|
||||||
|
+ require_once '/usr/share/php/PhpParser5/autoload.php';
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
$version = "5.0.0";
|
||||||
|
$phpParserDir = __DIR__ . "/PHP-Parser-$version";
|
||||||
|
if (!is_dir($phpParserDir)) {
|
842
php-8.3.7-argon2.patch
Normal file
842
php-8.3.7-argon2.patch
Normal file
@ -0,0 +1,842 @@
|
|||||||
|
From c6c39b2b1cb1ff9916a8db606b19fc4282feacd2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Remi Collet <remi@remirepo.net>
|
||||||
|
Date: Wed, 17 Apr 2024 15:58:49 +0200
|
||||||
|
Subject: [PATCH] Implement PASSWORD_ARGON2 from OpenSSL 3.2 Backported from
|
||||||
|
8.4 to 8.3
|
||||||
|
|
||||||
|
---
|
||||||
|
ext/openssl/config0.m4 | 2 +-
|
||||||
|
ext/openssl/openssl.c | 24 +
|
||||||
|
ext/openssl/openssl_pwhash.c | 412 ++++++++++++++++++
|
||||||
|
ext/openssl/openssl_pwhash.stub.php | 38 ++
|
||||||
|
ext/openssl/openssl_pwhash_arginfo.h | Bin 0 -> 2571 bytes
|
||||||
|
ext/openssl/php_openssl.h | 31 +-
|
||||||
|
ext/openssl/tests/openssl_password.phpt | 42 ++
|
||||||
|
.../tests/openssl_password_compat.phpt | 52 +++
|
||||||
|
.../tests/openssl_password_compat2.phpt | 52 +++
|
||||||
|
9 files changed, 651 insertions(+), 2 deletions(-)
|
||||||
|
create mode 100644 ext/openssl/openssl_pwhash.c
|
||||||
|
create mode 100644 ext/openssl/openssl_pwhash.stub.php
|
||||||
|
create mode 100644 ext/openssl/openssl_pwhash_arginfo.h
|
||||||
|
create mode 100644 ext/openssl/tests/openssl_password.phpt
|
||||||
|
create mode 100644 ext/openssl/tests/openssl_password_compat.phpt
|
||||||
|
create mode 100644 ext/openssl/tests/openssl_password_compat2.phpt
|
||||||
|
|
||||||
|
diff --git a/ext/openssl/config0.m4 b/ext/openssl/config0.m4
|
||||||
|
index ffd4e0751c..aae3812752 100644
|
||||||
|
--- a/ext/openssl/config0.m4
|
||||||
|
+++ b/ext/openssl/config0.m4
|
||||||
|
@@ -18,7 +18,7 @@ PHP_ARG_WITH([system-ciphers],
|
||||||
|
[no])
|
||||||
|
|
||||||
|
if test "$PHP_OPENSSL" != "no"; then
|
||||||
|
- PHP_NEW_EXTENSION(openssl, openssl.c xp_ssl.c, $ext_shared)
|
||||||
|
+ PHP_NEW_EXTENSION(openssl, openssl.c openssl_pwhash.c xp_ssl.c, $ext_shared)
|
||||||
|
PHP_SUBST(OPENSSL_SHARED_LIBADD)
|
||||||
|
|
||||||
|
if test "$PHP_KERBEROS" != "no"; then
|
||||||
|
diff --git a/ext/openssl/openssl.c b/ext/openssl/openssl.c
|
||||||
|
index 6f85e9852f..1f164a60b6 100644
|
||||||
|
--- a/ext/openssl/openssl.c
|
||||||
|
+++ b/ext/openssl/openssl.c
|
||||||
|
@@ -263,9 +263,21 @@ static void php_openssl_pkey_free_obj(zend_object *object)
|
||||||
|
zend_object_std_dtor(&key_object->std);
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+static const zend_module_dep openssl_deps[] = {
|
||||||
|
+ ZEND_MOD_REQUIRED("standard")
|
||||||
|
+ ZEND_MOD_END
|
||||||
|
+};
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* {{{ openssl_module_entry */
|
||||||
|
zend_module_entry openssl_module_entry = {
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ STANDARD_MODULE_HEADER_EX, NULL,
|
||||||
|
+ openssl_deps,
|
||||||
|
+#else
|
||||||
|
STANDARD_MODULE_HEADER,
|
||||||
|
+#endif
|
||||||
|
"openssl",
|
||||||
|
ext_functions,
|
||||||
|
PHP_MINIT(openssl),
|
||||||
|
@@ -1321,6 +1333,12 @@ PHP_MINIT_FUNCTION(openssl)
|
||||||
|
|
||||||
|
REGISTER_INI_ENTRIES();
|
||||||
|
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ if (FAILURE == PHP_MINIT(openssl_pwhash)(INIT_FUNC_ARGS_PASSTHRU)) {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
return SUCCESS;
|
||||||
|
}
|
||||||
|
/* }}} */
|
||||||
|
@@ -1395,6 +1413,12 @@ PHP_MSHUTDOWN_FUNCTION(openssl)
|
||||||
|
php_stream_xport_unregister("tlsv1.3");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ if (FAILURE == PHP_MSHUTDOWN(openssl_pwhash)(SHUTDOWN_FUNC_ARGS_PASSTHRU)) {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* reinstate the default tcp handler */
|
||||||
|
php_stream_xport_register("tcp", php_stream_generic_socket_factory);
|
||||||
|
|
||||||
|
diff --git a/ext/openssl/openssl_pwhash.c b/ext/openssl/openssl_pwhash.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..56ab62ff83
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/ext/openssl/openssl_pwhash.c
|
||||||
|
@@ -0,0 +1,412 @@
|
||||||
|
+/*
|
||||||
|
+ +----------------------------------------------------------------------+
|
||||||
|
+ | Copyright (c) The PHP Group |
|
||||||
|
+ +----------------------------------------------------------------------+
|
||||||
|
+ | This source file is subject to version 3.01 of the PHP license, |
|
||||||
|
+ | that is bundled with this package in the file LICENSE, and is |
|
||||||
|
+ | available through the world-wide-web at the following url: |
|
||||||
|
+ | https://www.php.net/license/3_01.txt |
|
||||||
|
+ | If you did not receive a copy of the PHP license and are unable to |
|
||||||
|
+ | obtain it through the world-wide-web, please send a note to |
|
||||||
|
+ | license@php.net so we can mail you a copy immediately. |
|
||||||
|
+ +----------------------------------------------------------------------+
|
||||||
|
+ | Authors: Remi Collet <remi@php.net> |
|
||||||
|
+ +----------------------------------------------------------------------+
|
||||||
|
+*/
|
||||||
|
+
|
||||||
|
+#ifdef HAVE_CONFIG_H
|
||||||
|
+# include "config.h"
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#include "php.h"
|
||||||
|
+#include "ext/standard/php_password.h"
|
||||||
|
+#include "php_openssl.h"
|
||||||
|
+
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+#include "Zend/zend_attributes.h"
|
||||||
|
+#include "openssl_pwhash_arginfo.h"
|
||||||
|
+#include <ext/standard/base64.h>
|
||||||
|
+#include <openssl/params.h>
|
||||||
|
+#include <openssl/core_names.h>
|
||||||
|
+#include <openssl/kdf.h>
|
||||||
|
+#include <openssl/thread.h>
|
||||||
|
+#include <openssl/rand.h>
|
||||||
|
+
|
||||||
|
+#define PHP_OPENSSL_MEMLIMIT_MIN 8u
|
||||||
|
+#define PHP_OPENSSL_MEMLIMIT_MAX UINT32_MAX
|
||||||
|
+#define PHP_OPENSSL_ITERLIMIT_MIN 1u
|
||||||
|
+#define PHP_OPENSSL_ITERLIMIT_MAX UINT32_MAX
|
||||||
|
+#define PHP_OPENSSL_THREADS_MIN 1u
|
||||||
|
+#define PHP_OPENSSL_THREADS_MAX UINT32_MAX
|
||||||
|
+
|
||||||
|
+#define PHP_OPENSSL_ARGON_VERSION 0x13
|
||||||
|
+
|
||||||
|
+#define PHP_OPENSSL_SALT_SIZE 16
|
||||||
|
+#define PHP_OPENSSL_HASH_SIZE 32
|
||||||
|
+#define PHP_OPENSSL_DIGEST_SIZE 128
|
||||||
|
+
|
||||||
|
+static inline zend_result get_options(zend_array *options, uint32_t *memlimit, uint32_t *iterlimit, uint32_t *threads)
|
||||||
|
+{
|
||||||
|
+ zval *opt;
|
||||||
|
+
|
||||||
|
+ *iterlimit = PHP_OPENSSL_PWHASH_ITERLIMIT;
|
||||||
|
+ *memlimit = PHP_OPENSSL_PWHASH_MEMLIMIT;
|
||||||
|
+ *threads = PHP_OPENSSL_PWHASH_THREADS;
|
||||||
|
+
|
||||||
|
+ if (!options) {
|
||||||
|
+ return SUCCESS;
|
||||||
|
+ }
|
||||||
|
+ if ((opt = zend_hash_str_find(options, "memory_cost", strlen("memory_cost")))) {
|
||||||
|
+ zend_long smemlimit = zval_get_long(opt);
|
||||||
|
+
|
||||||
|
+ if ((smemlimit < 0) || (smemlimit < PHP_OPENSSL_MEMLIMIT_MIN) || (smemlimit > (PHP_OPENSSL_MEMLIMIT_MAX))) {
|
||||||
|
+ zend_value_error("Memory cost is outside of allowed memory range");
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ *memlimit = smemlimit;
|
||||||
|
+ }
|
||||||
|
+ if ((opt = zend_hash_str_find(options, "time_cost", strlen("time_cost")))) {
|
||||||
|
+ zend_long siterlimit = zval_get_long(opt);
|
||||||
|
+ if ((siterlimit < PHP_OPENSSL_ITERLIMIT_MIN) || (siterlimit > PHP_OPENSSL_ITERLIMIT_MAX)) {
|
||||||
|
+ zend_value_error("Time cost is outside of allowed time range");
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ *iterlimit = siterlimit;
|
||||||
|
+ }
|
||||||
|
+ if ((opt = zend_hash_str_find(options, "threads", strlen("threads"))) && (zval_get_long(opt) != 1)) {
|
||||||
|
+ zend_long sthreads = zval_get_long(opt);
|
||||||
|
+ if ((sthreads < PHP_OPENSSL_THREADS_MIN) || (sthreads > PHP_OPENSSL_THREADS_MAX)) {
|
||||||
|
+ zend_value_error("Invalid number of threads");
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ *threads = sthreads;
|
||||||
|
+ }
|
||||||
|
+ return SUCCESS;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool php_openssl_argon2_compute_hash(
|
||||||
|
+ const char *algo,
|
||||||
|
+ uint32_t version, uint32_t memlimit, uint32_t iterlimit, uint32_t threads,
|
||||||
|
+ const char *pass, size_t pass_len,
|
||||||
|
+ const unsigned char *salt, size_t salt_len,
|
||||||
|
+ unsigned char *hash, size_t hash_len)
|
||||||
|
+{
|
||||||
|
+ OSSL_PARAM params[7], *p = params;
|
||||||
|
+ EVP_KDF *kdf = NULL;
|
||||||
|
+ EVP_KDF_CTX *kctx = NULL;
|
||||||
|
+ bool ret = false;
|
||||||
|
+
|
||||||
|
+ if (threads > 1) {
|
||||||
|
+ if (OSSL_set_max_threads(NULL, threads) != 1) {
|
||||||
|
+ goto fail;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ p = params;
|
||||||
|
+ *p++ = OSSL_PARAM_construct_uint32(OSSL_KDF_PARAM_THREADS,
|
||||||
|
+ &threads);
|
||||||
|
+ *p++ = OSSL_PARAM_construct_uint32(OSSL_KDF_PARAM_ARGON2_LANES,
|
||||||
|
+ &threads);
|
||||||
|
+ *p++= OSSL_PARAM_construct_uint32(OSSL_KDF_PARAM_ITER,
|
||||||
|
+ &iterlimit);
|
||||||
|
+ *p++ = OSSL_PARAM_construct_uint32(OSSL_KDF_PARAM_ARGON2_MEMCOST,
|
||||||
|
+ &memlimit);
|
||||||
|
+ *p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_SALT,
|
||||||
|
+ (void *)salt, salt_len);
|
||||||
|
+ *p++ = OSSL_PARAM_construct_octet_string(OSSL_KDF_PARAM_PASSWORD,
|
||||||
|
+ (void *)pass, pass_len);
|
||||||
|
+ *p++ = OSSL_PARAM_construct_end();
|
||||||
|
+
|
||||||
|
+ if ((kdf = EVP_KDF_fetch(NULL, algo, NULL)) == NULL) {
|
||||||
|
+ goto fail;
|
||||||
|
+ }
|
||||||
|
+ if ((kctx = EVP_KDF_CTX_new(kdf)) == NULL) {
|
||||||
|
+ goto fail;
|
||||||
|
+ }
|
||||||
|
+ if (EVP_KDF_derive(kctx, hash, hash_len, params) != 1) {
|
||||||
|
+ zend_value_error("Unexpected failure hashing password");
|
||||||
|
+ goto fail;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = true;
|
||||||
|
+
|
||||||
|
+fail:
|
||||||
|
+ EVP_KDF_free(kdf);
|
||||||
|
+ EVP_KDF_CTX_free(kctx);
|
||||||
|
+
|
||||||
|
+ if (threads > 1) {
|
||||||
|
+ OSSL_set_max_threads(NULL, 0);
|
||||||
|
+ }
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static zend_string *php_openssl_argon2_hash(const zend_string *password, zend_array *options, const char *algo)
|
||||||
|
+{
|
||||||
|
+ uint32_t iterlimit, memlimit, threads, version = PHP_OPENSSL_ARGON_VERSION;
|
||||||
|
+ zend_string *digest = NULL, *salt64 = NULL, *hash64 = NULL;
|
||||||
|
+ unsigned char hash[PHP_OPENSSL_HASH_SIZE+1], salt[PHP_OPENSSL_SALT_SIZE+1];
|
||||||
|
+
|
||||||
|
+ if ((ZSTR_LEN(password) >= UINT32_MAX)) {
|
||||||
|
+ zend_value_error("Password is too long");
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+ if (get_options(options, &memlimit, &iterlimit, &threads) == FAILURE) {
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+ if (RAND_bytes(salt, PHP_OPENSSL_SALT_SIZE) <= 0) {
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!php_openssl_argon2_compute_hash(algo, version, memlimit, iterlimit, threads,
|
||||||
|
+ ZSTR_VAL(password), ZSTR_LEN(password), salt, PHP_OPENSSL_SALT_SIZE, hash, PHP_OPENSSL_HASH_SIZE)) {
|
||||||
|
+ return NULL;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ hash64 = php_base64_encode(hash, PHP_OPENSSL_HASH_SIZE);
|
||||||
|
+ /* No padding utsing 32 *4 / 3 = 42.6 (43 + 1 padding char) */
|
||||||
|
+ ZEND_ASSERT(ZSTR_LEN(hash64)==44 && ZSTR_VAL(hash64)[43]=='=');
|
||||||
|
+ ZSTR_VAL(hash64)[43] = 0;
|
||||||
|
+ ZSTR_LEN(hash64) = 43;
|
||||||
|
+
|
||||||
|
+ salt64 = php_base64_encode(salt, PHP_OPENSSL_SALT_SIZE);
|
||||||
|
+ /* No padding using 16 *4 / 3 = 21.3 (22 + 2 padding char) */
|
||||||
|
+ ZEND_ASSERT(ZSTR_LEN(salt64)==24 && ZSTR_VAL(salt64)[22]=='=' && ZSTR_VAL(salt64)[23]=='=');
|
||||||
|
+ ZSTR_VAL(salt64)[22] = 0;
|
||||||
|
+ ZSTR_LEN(salt64) = 22;
|
||||||
|
+
|
||||||
|
+ digest = zend_string_alloc(PHP_OPENSSL_DIGEST_SIZE, 0);
|
||||||
|
+ ZSTR_LEN(digest) = snprintf(ZSTR_VAL(digest), ZSTR_LEN(digest), "$%s$v=%d$m=%u,t=%u,p=%u$%s$%s",
|
||||||
|
+ algo, version, memlimit, iterlimit, threads, ZSTR_VAL(salt64), ZSTR_VAL(hash64));
|
||||||
|
+
|
||||||
|
+ zend_string_release(salt64);
|
||||||
|
+ zend_string_release(hash64);
|
||||||
|
+
|
||||||
|
+ return digest;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int php_openssl_argon2_extract(
|
||||||
|
+ const zend_string *digest, uint32_t *version, uint32_t *memlimit, uint32_t *iterlimit,
|
||||||
|
+ uint32_t *threads, zend_string **salt, zend_string **hash)
|
||||||
|
+{
|
||||||
|
+ const char *p;
|
||||||
|
+ char *hash64, *salt64;
|
||||||
|
+
|
||||||
|
+ if (!digest || (ZSTR_LEN(digest) < sizeof("$argon2id$"))) {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ p = ZSTR_VAL(digest);
|
||||||
|
+ if (!memcmp(p, "$argon2i$", strlen("$argon2i$"))) {
|
||||||
|
+ p += strlen("$argon2i$");
|
||||||
|
+ } else if (!memcmp(p, "$argon2id$", strlen("$argon2id$"))) {
|
||||||
|
+ p += strlen("$argon2id$");
|
||||||
|
+ } else {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ if (sscanf(p, "v=%" PRIu32 "$m=%" PRIu32 ",t=%" PRIu32 ",p=%" PRIu32,
|
||||||
|
+ version, memlimit, iterlimit, threads) != 4) {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ if (salt && hash) {
|
||||||
|
+ /* start of param */
|
||||||
|
+ p = strchr(p, '$');
|
||||||
|
+ if (!p) {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ /* start of salt */
|
||||||
|
+ p = strchr(p+1, '$');
|
||||||
|
+ if (!p) {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ salt64 = estrdup(p+1);
|
||||||
|
+ /* start of hash */
|
||||||
|
+ hash64 = strchr(salt64, '$');
|
||||||
|
+ if (!hash64) {
|
||||||
|
+ efree(salt64);
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ *hash64++ = 0;
|
||||||
|
+ *salt = php_base64_decode((unsigned char *)salt64, strlen(salt64));
|
||||||
|
+ *hash = php_base64_decode((unsigned char *)hash64, strlen(hash64));
|
||||||
|
+ efree(salt64);
|
||||||
|
+ }
|
||||||
|
+ return SUCCESS;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool php_openssl_argon2_verify(const zend_string *password, const zend_string *digest, const char *algo)
|
||||||
|
+{
|
||||||
|
+ uint32_t version, iterlimit, memlimit, threads;
|
||||||
|
+ zend_string *salt, *hash, *new;
|
||||||
|
+ bool ret = false;
|
||||||
|
+
|
||||||
|
+ if ((ZSTR_LEN(password) >= UINT32_MAX) || (ZSTR_LEN(digest) >= UINT32_MAX)) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ if (FAILURE == php_openssl_argon2_extract(digest, &version, &memlimit, &iterlimit, &threads, &salt, &hash)) {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ new = zend_string_alloc(ZSTR_LEN(hash), 0);
|
||||||
|
+ if (php_openssl_argon2_compute_hash(algo, version, memlimit, iterlimit, threads,
|
||||||
|
+ ZSTR_VAL(password), ZSTR_LEN(password), (unsigned char *)ZSTR_VAL(salt),
|
||||||
|
+ ZSTR_LEN(salt), (unsigned char *)ZSTR_VAL(new), ZSTR_LEN(new))) {
|
||||||
|
+ ret = (php_safe_bcmp(hash, new) == 0);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ zend_string_release(new);
|
||||||
|
+ zend_string_release(salt);
|
||||||
|
+ zend_string_release(hash);
|
||||||
|
+
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool php_openssl_argon2i_verify(const zend_string *password, const zend_string *digest)
|
||||||
|
+{
|
||||||
|
+ return php_openssl_argon2_verify(password, digest, "argon2i");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool php_openssl_argon2id_verify(const zend_string *password, const zend_string *digest)
|
||||||
|
+{
|
||||||
|
+ return php_openssl_argon2_verify(password, digest, "argon2id");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static bool php_openssl_argon2_needs_rehash(const zend_string *hash, zend_array *options)
|
||||||
|
+{
|
||||||
|
+ uint32_t version, iterlimit, memlimit, threads;
|
||||||
|
+ uint32_t new_version = PHP_OPENSSL_ARGON_VERSION, new_iterlimit, new_memlimit, new_threads;
|
||||||
|
+
|
||||||
|
+ if (FAILURE == get_options(options, &new_memlimit, &new_iterlimit, &new_threads)) {
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+ if (FAILURE == php_openssl_argon2_extract(hash, &version, &memlimit, &iterlimit, &threads, NULL, NULL)) {
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ // Algo already checked in pasword_needs_rehash implementation
|
||||||
|
+ return (version != new_version) ||
|
||||||
|
+ (iterlimit != new_iterlimit) ||
|
||||||
|
+ (memlimit != new_memlimit) ||
|
||||||
|
+ (threads != new_threads);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int php_openssl_argon2_get_info(zval *return_value, const zend_string *hash)
|
||||||
|
+{
|
||||||
|
+ uint32_t v, threads;
|
||||||
|
+ uint32_t memory_cost;
|
||||||
|
+ uint32_t time_cost;
|
||||||
|
+
|
||||||
|
+ if (FAILURE == php_openssl_argon2_extract(hash, &v, &memory_cost, &time_cost, &threads, NULL, NULL)) {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ add_assoc_long(return_value, "memory_cost", memory_cost);
|
||||||
|
+ add_assoc_long(return_value, "time_cost", time_cost);
|
||||||
|
+ add_assoc_long(return_value, "threads", threads);
|
||||||
|
+
|
||||||
|
+ return SUCCESS;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+static zend_string *php_openssl_argon2i_hash(const zend_string *password, zend_array *options)
|
||||||
|
+{
|
||||||
|
+ return php_openssl_argon2_hash(password, options, "argon2i");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const php_password_algo openssl_algo_argon2i = {
|
||||||
|
+ "argon2i",
|
||||||
|
+ php_openssl_argon2i_hash,
|
||||||
|
+ php_openssl_argon2i_verify,
|
||||||
|
+ php_openssl_argon2_needs_rehash,
|
||||||
|
+ php_openssl_argon2_get_info,
|
||||||
|
+ NULL,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static zend_string *php_openssl_argon2id_hash(const zend_string *password, zend_array *options)
|
||||||
|
+{
|
||||||
|
+ return php_openssl_argon2_hash(password, options, "argon2id");
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static const php_password_algo openssl_algo_argon2id = {
|
||||||
|
+ "argon2id",
|
||||||
|
+ php_openssl_argon2id_hash,
|
||||||
|
+ php_openssl_argon2id_verify,
|
||||||
|
+ php_openssl_argon2_needs_rehash,
|
||||||
|
+ php_openssl_argon2_get_info,
|
||||||
|
+ NULL,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+PHP_FUNCTION(openssl_password_hash)
|
||||||
|
+{
|
||||||
|
+ zend_string *password, *algo, *digest;
|
||||||
|
+ zend_array *options = NULL;
|
||||||
|
+
|
||||||
|
+ ZEND_PARSE_PARAMETERS_START(2, 3)
|
||||||
|
+ Z_PARAM_STR(algo)
|
||||||
|
+ Z_PARAM_STR(password)
|
||||||
|
+ Z_PARAM_OPTIONAL
|
||||||
|
+ Z_PARAM_ARRAY_HT(options)
|
||||||
|
+ ZEND_PARSE_PARAMETERS_END();
|
||||||
|
+
|
||||||
|
+ if (strcmp(ZSTR_VAL(algo), "argon2i") && strcmp(ZSTR_VAL(algo), "argon2id")) {
|
||||||
|
+ zend_argument_value_error(1, "must be a valid password openssl hashing algorithm");
|
||||||
|
+ RETURN_THROWS();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ digest = php_openssl_argon2_hash(password, options, ZSTR_VAL(algo));
|
||||||
|
+ if (!digest) {
|
||||||
|
+ if (!EG(exception)) {
|
||||||
|
+ zend_throw_error(NULL, "Password hashing failed for unknown reason");
|
||||||
|
+ }
|
||||||
|
+ RETURN_THROWS();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ RETURN_NEW_STR(digest);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+PHP_FUNCTION(openssl_password_verify)
|
||||||
|
+{
|
||||||
|
+ zend_string *password, *algo, *digest;
|
||||||
|
+
|
||||||
|
+ ZEND_PARSE_PARAMETERS_START(3, 3)
|
||||||
|
+ Z_PARAM_STR(algo)
|
||||||
|
+ Z_PARAM_STR(password)
|
||||||
|
+ Z_PARAM_STR(digest)
|
||||||
|
+ ZEND_PARSE_PARAMETERS_END();
|
||||||
|
+
|
||||||
|
+ if (strcmp(ZSTR_VAL(algo), "argon2i") && strcmp(ZSTR_VAL(algo), "argon2id")) {
|
||||||
|
+ zend_argument_value_error(1, "must be a valid password openssl hashing algorithm");
|
||||||
|
+ RETURN_THROWS();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ RETURN_BOOL(php_openssl_argon2_verify(password, digest, ZSTR_VAL(algo)));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+PHP_MINIT_FUNCTION(openssl_pwhash)
|
||||||
|
+{
|
||||||
|
+ zend_string *argon2i = ZSTR_INIT_LITERAL("argon2i", 1);
|
||||||
|
+
|
||||||
|
+ zend_register_functions(NULL, ext_functions, NULL, type);
|
||||||
|
+
|
||||||
|
+ if (php_password_algo_find(argon2i)) {
|
||||||
|
+ /* Nothing to do. Core or sodium has registered these algorithms for us. */
|
||||||
|
+ zend_string_release(argon2i);
|
||||||
|
+ return SUCCESS;
|
||||||
|
+ }
|
||||||
|
+ zend_string_release(argon2i);
|
||||||
|
+
|
||||||
|
+ register_openssl_pwhash_symbols(module_number);
|
||||||
|
+
|
||||||
|
+ if (FAILURE == php_password_algo_register("argon2i", &openssl_algo_argon2i)) {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+ if (FAILURE == php_password_algo_register("argon2id", &openssl_algo_argon2id)) {
|
||||||
|
+ return FAILURE;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return SUCCESS;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+PHP_MSHUTDOWN_FUNCTION(openssl_pwhash)
|
||||||
|
+{
|
||||||
|
+ zend_unregister_functions(ext_functions, -1, NULL);
|
||||||
|
+
|
||||||
|
+ return SUCCESS;
|
||||||
|
+}
|
||||||
|
+#endif /* PHP_OPENSSL_API_VERSION >= 0x30200 */
|
||||||
|
diff --git a/ext/openssl/openssl_pwhash.stub.php b/ext/openssl/openssl_pwhash.stub.php
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..85c2f04d55
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/ext/openssl/openssl_pwhash.stub.php
|
||||||
|
@@ -0,0 +1,38 @@
|
||||||
|
+<?php
|
||||||
|
+
|
||||||
|
+/** @generate-class-entries */
|
||||||
|
+
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+/**
|
||||||
|
+ * @var string
|
||||||
|
+ */
|
||||||
|
+const PASSWORD_ARGON2I = "argon2i";
|
||||||
|
+/**
|
||||||
|
+ * @var string
|
||||||
|
+ */
|
||||||
|
+const PASSWORD_ARGON2ID = "argon2id";
|
||||||
|
+/**
|
||||||
|
+ * @var int
|
||||||
|
+ * @cvalue PHP_OPENSSL_PWHASH_MEMLIMIT
|
||||||
|
+ */
|
||||||
|
+const PASSWORD_ARGON2_DEFAULT_MEMORY_COST = UNKNOWN;
|
||||||
|
+/**
|
||||||
|
+ * @var int
|
||||||
|
+ * @cvalue PHP_OPENSSL_PWHASH_ITERLIMIT
|
||||||
|
+ */
|
||||||
|
+const PASSWORD_ARGON2_DEFAULT_TIME_COST = UNKNOWN;
|
||||||
|
+/**
|
||||||
|
+ * @var int
|
||||||
|
+ * @cvalue PHP_OPENSSL_PWHASH_THREADS
|
||||||
|
+ */
|
||||||
|
+const PASSWORD_ARGON2_DEFAULT_THREADS = UNKNOWN;
|
||||||
|
+/**
|
||||||
|
+ * @var string
|
||||||
|
+ */
|
||||||
|
+const PASSWORD_ARGON2_PROVIDER = "openssl";
|
||||||
|
+
|
||||||
|
+function openssl_password_hash(string $algo, #[\SensitiveParameter] string $password, array $options = []): string {}
|
||||||
|
+function openssl_password_verify(string $algo, #[\SensitiveParameter] string $password, string $hash): bool {}
|
||||||
|
+
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
diff --git a/ext/openssl/openssl_pwhash_arginfo.h b/ext/openssl/openssl_pwhash_arginfo.h
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..f60a1f5b08
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/ext/openssl/openssl_pwhash_arginfo.h
|
||||||
|
@@ -0,0 +1,68 @@
|
||||||
|
+/* This is a generated file, edit the .stub.php file instead.
|
||||||
|
+ * Stub hash: a01216f790c4c42499bd85448aacb3a6d58acc94 */
|
||||||
|
+
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_password_hash, 0, 2, IS_STRING, 0)
|
||||||
|
+ ZEND_ARG_TYPE_INFO(0, algo, IS_STRING, 0)
|
||||||
|
+ ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
|
||||||
|
+ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "[]")
|
||||||
|
+ZEND_END_ARG_INFO()
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_openssl_password_verify, 0, 3, _IS_BOOL, 0)
|
||||||
|
+ ZEND_ARG_TYPE_INFO(0, algo, IS_STRING, 0)
|
||||||
|
+ ZEND_ARG_TYPE_INFO(0, password, IS_STRING, 0)
|
||||||
|
+ ZEND_ARG_TYPE_INFO(0, hash, IS_STRING, 0)
|
||||||
|
+ZEND_END_ARG_INFO()
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ZEND_FUNCTION(openssl_password_hash);
|
||||||
|
+#endif
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ZEND_FUNCTION(openssl_password_verify);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+static const zend_function_entry ext_functions[] = {
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ ZEND_FE(openssl_password_hash, arginfo_openssl_password_hash)
|
||||||
|
+#endif
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ ZEND_FE(openssl_password_verify, arginfo_openssl_password_verify)
|
||||||
|
+#endif
|
||||||
|
+ ZEND_FE_END
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static void register_openssl_pwhash_symbols(int module_number)
|
||||||
|
+{
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ REGISTER_STRING_CONSTANT("PASSWORD_ARGON2I", "argon2i", CONST_PERSISTENT);
|
||||||
|
+#endif
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ REGISTER_STRING_CONSTANT("PASSWORD_ARGON2ID", "argon2id", CONST_PERSISTENT);
|
||||||
|
+#endif
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_DEFAULT_MEMORY_COST", PHP_OPENSSL_PWHASH_MEMLIMIT, CONST_PERSISTENT);
|
||||||
|
+#endif
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_DEFAULT_TIME_COST", PHP_OPENSSL_PWHASH_ITERLIMIT, CONST_PERSISTENT);
|
||||||
|
+#endif
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ REGISTER_LONG_CONSTANT("PASSWORD_ARGON2_DEFAULT_THREADS", PHP_OPENSSL_PWHASH_THREADS, CONST_PERSISTENT);
|
||||||
|
+#endif
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+ REGISTER_STRING_CONSTANT("PASSWORD_ARGON2_PROVIDER", "openssl", CONST_PERSISTENT);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+
|
||||||
|
+ zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "openssl_password_hash", sizeof("openssl_password_hash") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
|
||||||
|
+#endif
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+
|
||||||
|
+ zend_add_parameter_attribute(zend_hash_str_find_ptr(CG(function_table), "openssl_password_verify", sizeof("openssl_password_verify") - 1), 1, ZSTR_KNOWN(ZEND_STR_SENSITIVEPARAMETER), 0);
|
||||||
|
+#endif
|
||||||
|
+}
|
||||||
|
diff --git a/ext/openssl/php_openssl.h b/ext/openssl/php_openssl.h
|
||||||
|
index 304854b4bf..9532cfe6f9 100644
|
||||||
|
--- a/ext/openssl/php_openssl.h
|
||||||
|
+++ b/ext/openssl/php_openssl.h
|
||||||
|
@@ -39,8 +39,10 @@ extern zend_module_entry openssl_module_entry;
|
||||||
|
#define PHP_OPENSSL_API_VERSION 0x10002
|
||||||
|
#elif OPENSSL_VERSION_NUMBER < 0x30000000L
|
||||||
|
#define PHP_OPENSSL_API_VERSION 0x10100
|
||||||
|
-#else
|
||||||
|
+#elif OPENSSL_VERSION_NUMBER < 0x30200000L
|
||||||
|
#define PHP_OPENSSL_API_VERSION 0x30000
|
||||||
|
+#else
|
||||||
|
+#define PHP_OPENSSL_API_VERSION 0x30200
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
@@ -158,6 +160,33 @@ static inline php_openssl_certificate_object *php_openssl_certificate_from_obj(z
|
||||||
|
|
||||||
|
#define Z_OPENSSL_CERTIFICATE_P(zv) php_openssl_certificate_from_obj(Z_OBJ_P(zv))
|
||||||
|
|
||||||
|
+#if PHP_OPENSSL_API_VERSION >= 0x30200
|
||||||
|
+/**
|
||||||
|
+ * MEMLIMIT is normalized to KB even though sodium uses Bytes in order to
|
||||||
|
+ * present a consistent user-facing API.
|
||||||
|
+ *
|
||||||
|
+ * When updating these values, synchronize ext/standard/php_password.h values.
|
||||||
|
+ */
|
||||||
|
+#if defined(PHP_PASSWORD_ARGON2_MEMORY_COST)
|
||||||
|
+#define PHP_OPENSSL_PWHASH_MEMLIMIT PHP_PASSWORD_ARGON2_MEMORY_COST
|
||||||
|
+#else
|
||||||
|
+#define PHP_OPENSSL_PWHASH_MEMLIMIT (64 << 10)
|
||||||
|
+#endif
|
||||||
|
+#if defined(PHP_PASSWORD_ARGON2_TIME_COST)
|
||||||
|
+#define PHP_OPENSSL_PWHASH_ITERLIMIT PHP_PASSWORD_ARGON2_TIME_COST
|
||||||
|
+#else
|
||||||
|
+#define PHP_OPENSSL_PWHASH_ITERLIMIT 4
|
||||||
|
+#endif
|
||||||
|
+#if defined(PHP_PASSWORD_ARGON2_THREADS)
|
||||||
|
+#define PHP_OPENSSL_PWHASH_THREADS PHP_PASSWORD_ARGON2_THREADS
|
||||||
|
+#else
|
||||||
|
+#define PHP_OPENSSL_PWHASH_THREADS 1
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+PHP_MINIT_FUNCTION(openssl_pwhash);
|
||||||
|
+PHP_MSHUTDOWN_FUNCTION(openssl_pwhash);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
PHP_MINIT_FUNCTION(openssl);
|
||||||
|
PHP_MSHUTDOWN_FUNCTION(openssl);
|
||||||
|
PHP_MINFO_FUNCTION(openssl);
|
||||||
|
diff --git a/ext/openssl/tests/openssl_password.phpt b/ext/openssl/tests/openssl_password.phpt
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..7881803038
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/ext/openssl/tests/openssl_password.phpt
|
||||||
|
@@ -0,0 +1,42 @@
|
||||||
|
+--TEST--
|
||||||
|
+Basic features of password_hash
|
||||||
|
+--EXTENSIONS--
|
||||||
|
+openssl
|
||||||
|
+--SKIPIF--
|
||||||
|
+<?php
|
||||||
|
+if (!function_exists('openssl_password_hash')) {
|
||||||
|
+ echo "skip - No openssl_password_hash";
|
||||||
|
+}
|
||||||
|
+?>
|
||||||
|
+--FILE--
|
||||||
|
+<?php
|
||||||
|
+
|
||||||
|
+echo 'Argon2 provider: ';
|
||||||
|
+var_dump(PASSWORD_ARGON2_PROVIDER);
|
||||||
|
+
|
||||||
|
+foreach([1, 2] as $mem) {
|
||||||
|
+ foreach([1, 2] as $time) {
|
||||||
|
+ $opts = [
|
||||||
|
+ 'memory_cost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST / $mem,
|
||||||
|
+ 'time_cost' => PASSWORD_ARGON2_DEFAULT_TIME_COST / $time,
|
||||||
|
+ 'threads' => PASSWORD_ARGON2_DEFAULT_THREADS,
|
||||||
|
+ ];
|
||||||
|
+ foreach(['argon2i', 'argon2id'] as $algo) {
|
||||||
|
+ $pass = "secret$mem$time$algo";
|
||||||
|
+ $hash = openssl_password_hash($algo, $pass, $opts);
|
||||||
|
+ var_dump(openssl_password_verify($algo, $pass, $hash));
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+?>
|
||||||
|
+--EXPECTF--
|
||||||
|
+Argon2 provider: string(%d) "%s"
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+
|
||||||
|
diff --git a/ext/openssl/tests/openssl_password_compat.phpt b/ext/openssl/tests/openssl_password_compat.phpt
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..0de683616a
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/ext/openssl/tests/openssl_password_compat.phpt
|
||||||
|
@@ -0,0 +1,52 @@
|
||||||
|
+--TEST--
|
||||||
|
+Compatibility of password_hash (libsodium / openssl)
|
||||||
|
+--EXTENSIONS--
|
||||||
|
+openssl
|
||||||
|
+sodium
|
||||||
|
+--SKIPIF--
|
||||||
|
+<?php
|
||||||
|
+if (!function_exists('sodium_crypto_pwhash_str_verify')) {
|
||||||
|
+ echo "skip - No crypto_pwhash_str_verify";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+if (!function_exists('openssl_password_hash')) {
|
||||||
|
+ echo "skip - No crypto_pwhash_str_verify";
|
||||||
|
+}
|
||||||
|
+?>
|
||||||
|
+--FILE--
|
||||||
|
+<?php
|
||||||
|
+
|
||||||
|
+echo 'Argon2 provider: ';
|
||||||
|
+var_dump(PASSWORD_ARGON2_PROVIDER);
|
||||||
|
+
|
||||||
|
+foreach([1, 2] as $mem) {
|
||||||
|
+ foreach([1, 2] as $time) {
|
||||||
|
+ $opts = [
|
||||||
|
+ 'memory_cost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST / $mem,
|
||||||
|
+ 'time_cost' => PASSWORD_ARGON2_DEFAULT_TIME_COST / $time,
|
||||||
|
+ 'threads' => PASSWORD_ARGON2_DEFAULT_THREADS,
|
||||||
|
+ ];
|
||||||
|
+ $algo = 'argon2id';
|
||||||
|
+ $pass = "secret$mem$time$algo";
|
||||||
|
+
|
||||||
|
+ /* hash with libsodium / verify with openssl */
|
||||||
|
+ $hash = sodium_crypto_pwhash_str($pass, PASSWORD_ARGON2_DEFAULT_TIME_COST / $time, PASSWORD_ARGON2_DEFAULT_MEMORY_COST / $mem);
|
||||||
|
+ var_dump(openssl_password_verify($algo, $pass, $hash));
|
||||||
|
+
|
||||||
|
+ /* hash with openssl / verify with libsodium */
|
||||||
|
+ $hash = openssl_password_hash($algo, $pass, $opts);
|
||||||
|
+ var_dump(sodium_crypto_pwhash_str_verify($hash, $pass));
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+?>
|
||||||
|
+--EXPECTF--
|
||||||
|
+Argon2 provider: string(%d) "%s"
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+
|
||||||
|
diff --git a/ext/openssl/tests/openssl_password_compat2.phpt b/ext/openssl/tests/openssl_password_compat2.phpt
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000..42cf8682fd
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/ext/openssl/tests/openssl_password_compat2.phpt
|
||||||
|
@@ -0,0 +1,52 @@
|
||||||
|
+--TEST--
|
||||||
|
+Compatibility of password_hash (libargon2 / openssl)
|
||||||
|
+--EXTENSIONS--
|
||||||
|
+openssl
|
||||||
|
+sodium
|
||||||
|
+--SKIPIF--
|
||||||
|
+<?php
|
||||||
|
+if (PASSWORD_ARGON2_PROVIDER != "standard") {
|
||||||
|
+ echo "skip - libargon2 not available";
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+if (!function_exists('openssl_password_hash')) {
|
||||||
|
+ echo "skip - No crypto_pwhash_str_verify";
|
||||||
|
+}
|
||||||
|
+?>
|
||||||
|
+--FILE--
|
||||||
|
+<?php
|
||||||
|
+
|
||||||
|
+echo 'Argon2 provider: ';
|
||||||
|
+var_dump(PASSWORD_ARGON2_PROVIDER);
|
||||||
|
+
|
||||||
|
+foreach([1, 2] as $mem) {
|
||||||
|
+ foreach([1, 2] as $time) {
|
||||||
|
+ $opts = [
|
||||||
|
+ 'memory_cost' => PASSWORD_ARGON2_DEFAULT_MEMORY_COST / $mem,
|
||||||
|
+ 'time_cost' => PASSWORD_ARGON2_DEFAULT_TIME_COST / $time,
|
||||||
|
+ 'threads' => PASSWORD_ARGON2_DEFAULT_THREADS,
|
||||||
|
+ ];
|
||||||
|
+ $algo = 'argon2id';
|
||||||
|
+ $pass = "secret$mem$time$algo";
|
||||||
|
+
|
||||||
|
+ /* hash with libargon2 / verify with openssl */
|
||||||
|
+ $hash = password_hash($pass, PASSWORD_ARGON2ID, $opts);
|
||||||
|
+ var_dump(openssl_password_verify($algo, $pass, $hash));
|
||||||
|
+
|
||||||
|
+ /* hash with openssl / verify with libargon2 */
|
||||||
|
+ $hash = openssl_password_hash($algo, $pass, $opts);
|
||||||
|
+ var_dump(password_verify($pass, $hash));
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+?>
|
||||||
|
+--EXPECT--
|
||||||
|
+Argon2 provider: string(8) "standard"
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+bool(true)
|
||||||
|
+
|
||||||
|
--
|
||||||
|
2.45.0
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
; Start a new pool named 'www'.
|
; Start a new pool named 'www'.
|
||||||
; the variable $pool can we used in any directive and will be replaced by the
|
; the variable $pool can be used in any directive and will be replaced by the
|
||||||
; pool name ('www' here)
|
; pool name ('www' here)
|
||||||
[www]
|
[www]
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ pm.min_spare_servers = 5
|
|||||||
; Note: Used only when pm is set to 'dynamic'
|
; Note: Used only when pm is set to 'dynamic'
|
||||||
; Note: Mandatory when pm is set to 'dynamic'
|
; Note: Mandatory when pm is set to 'dynamic'
|
||||||
pm.max_spare_servers = 35
|
pm.max_spare_servers = 35
|
||||||
|
|
||||||
; The number of seconds after which an idle process will be killed.
|
; The number of seconds after which an idle process will be killed.
|
||||||
; Note: Used only when pm is set to 'ondemand'
|
; Note: Used only when pm is set to 'ondemand'
|
||||||
; Default Value: 10s
|
; Default Value: 10s
|
||||||
@ -238,7 +238,7 @@ pm.max_spare_servers = 35
|
|||||||
; may conflict with a real PHP file.
|
; may conflict with a real PHP file.
|
||||||
; Default Value: not set
|
; Default Value: not set
|
||||||
;pm.status_path = /status
|
;pm.status_path = /status
|
||||||
|
|
||||||
; The ping URI to call the monitoring page of FPM. If this value is not set, no
|
; The ping URI to call the monitoring page of FPM. If this value is not set, no
|
||||||
; URI will be recognized as a ping page. This could be used to test from outside
|
; URI will be recognized as a ping page. This could be used to test from outside
|
||||||
; that FPM is alive and responding, or to
|
; that FPM is alive and responding, or to
|
||||||
@ -255,7 +255,7 @@ pm.max_spare_servers = 35
|
|||||||
; response is formatted as text/plain with a 200 response code.
|
; response is formatted as text/plain with a 200 response code.
|
||||||
; Default Value: pong
|
; Default Value: pong
|
||||||
;ping.response = pong
|
;ping.response = pong
|
||||||
|
|
||||||
; The access log file
|
; The access log file
|
||||||
; Default: not set
|
; Default: not set
|
||||||
;access.log = log/$pool.access.log
|
;access.log = log/$pool.access.log
|
||||||
@ -330,22 +330,26 @@ slowlog = /var/log/php-fpm/www-slow.log
|
|||||||
; Default Value: 0
|
; Default Value: 0
|
||||||
;request_slowlog_timeout = 0
|
;request_slowlog_timeout = 0
|
||||||
|
|
||||||
|
; Depth of slow log stack trace.
|
||||||
|
; Default Value: 20
|
||||||
|
;request_slowlog_trace_depth = 20
|
||||||
|
|
||||||
; The timeout for serving a single request after which the worker process will
|
; The timeout for serving a single request after which the worker process will
|
||||||
; be killed. This option should be used when the 'max_execution_time' ini option
|
; be killed. This option should be used when the 'max_execution_time' ini option
|
||||||
; does not stop script execution for some reason. A value of '0' means 'off'.
|
; does not stop script execution for some reason. A value of '0' means 'off'.
|
||||||
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
|
||||||
; Default Value: 0
|
; Default Value: 0
|
||||||
;request_terminate_timeout = 0
|
;request_terminate_timeout = 0
|
||||||
|
|
||||||
; Set open file descriptor rlimit.
|
; Set open file descriptor rlimit.
|
||||||
; Default Value: system defined value
|
; Default Value: system defined value
|
||||||
;rlimit_files = 1024
|
;rlimit_files = 1024
|
||||||
|
|
||||||
; Set max core size rlimit.
|
; Set max core size rlimit.
|
||||||
; Possible Values: 'unlimited' or an integer greater or equal to 0
|
; Possible Values: 'unlimited' or an integer greater or equal to 0
|
||||||
; Default Value: system defined value
|
; Default Value: system defined value
|
||||||
;rlimit_core = 0
|
;rlimit_core = 0
|
||||||
|
|
||||||
; Chroot to this directory at the start. This value must be defined as an
|
; Chroot to this directory at the start. This value must be defined as an
|
||||||
; absolute path. When this value is not set, chroot is not used.
|
; absolute path. When this value is not set, chroot is not used.
|
||||||
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
|
; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
|
||||||
@ -355,20 +359,20 @@ slowlog = /var/log/php-fpm/www-slow.log
|
|||||||
; possible. However, all PHP paths will be relative to the chroot
|
; possible. However, all PHP paths will be relative to the chroot
|
||||||
; (error_log, sessions.save_path, ...).
|
; (error_log, sessions.save_path, ...).
|
||||||
; Default Value: not set
|
; Default Value: not set
|
||||||
;chroot =
|
;chroot =
|
||||||
|
|
||||||
; Chdir to this directory at the start.
|
; Chdir to this directory at the start.
|
||||||
; Note: relative path can be used.
|
; Note: relative path can be used.
|
||||||
; Default Value: current directory or / when chroot
|
; Default Value: current directory or / when chroot
|
||||||
;chdir = /var/www
|
;chdir = /var/www
|
||||||
|
|
||||||
; Redirect worker stdout and stderr into main error log. If not set, stdout and
|
; Redirect worker stdout and stderr into main error log. If not set, stdout and
|
||||||
; stderr will be redirected to /dev/null according to FastCGI specs.
|
; stderr will be redirected to /dev/null according to FastCGI specs.
|
||||||
; Note: on highloaded environement, this can cause some delay in the page
|
; Note: on highloaded environement, this can cause some delay in the page
|
||||||
; process time (several ms).
|
; process time (several ms).
|
||||||
; Default Value: no
|
; Default Value: no
|
||||||
;catch_workers_output = yes
|
;catch_workers_output = yes
|
||||||
|
|
||||||
; Clear environment in FPM workers
|
; Clear environment in FPM workers
|
||||||
; Prevents arbitrary environment variables from reaching FPM worker processes
|
; Prevents arbitrary environment variables from reaching FPM worker processes
|
||||||
; by clearing the environment in workers before env vars specified in this
|
; by clearing the environment in workers before env vars specified in this
|
||||||
@ -381,7 +385,7 @@ slowlog = /var/log/php-fpm/www-slow.log
|
|||||||
; Limits the extensions of the main script FPM will allow to parse. This can
|
; Limits the extensions of the main script FPM will allow to parse. This can
|
||||||
; prevent configuration mistakes on the web server side. You should only limit
|
; prevent configuration mistakes on the web server side. You should only limit
|
||||||
; FPM to .php extensions to prevent malicious users to use other extensions to
|
; FPM to .php extensions to prevent malicious users to use other extensions to
|
||||||
; exectute php code.
|
; execute php code.
|
||||||
; Note: set an empty value to allow all extensions.
|
; Note: set an empty value to allow all extensions.
|
||||||
; Default Value: .php
|
; Default Value: .php
|
||||||
;security.limit_extensions = .php .php3 .php4 .php5 .php7
|
;security.limit_extensions = .php .php3 .php4 .php5 .php7
|
||||||
@ -399,7 +403,7 @@ slowlog = /var/log/php-fpm/www-slow.log
|
|||||||
; overwrite the values previously defined in the php.ini. The directives are the
|
; overwrite the values previously defined in the php.ini. The directives are the
|
||||||
; same as the PHP SAPI:
|
; same as the PHP SAPI:
|
||||||
; php_value/php_flag - you can set classic ini defines which can
|
; php_value/php_flag - you can set classic ini defines which can
|
||||||
; be overwritten from PHP call 'ini_set'.
|
; be overwritten from PHP call 'ini_set'.
|
||||||
; php_admin_value/php_admin_flag - these directives won't be overwritten by
|
; php_admin_value/php_admin_flag - these directives won't be overwritten by
|
||||||
; PHP call 'ini_set'
|
; PHP call 'ini_set'
|
||||||
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
|
; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
|
@ -5,11 +5,6 @@
|
|||||||
; All relative paths in this configuration file are relative to PHP's install
|
; All relative paths in this configuration file are relative to PHP's install
|
||||||
; prefix.
|
; prefix.
|
||||||
|
|
||||||
; Include one or more files. If glob(3) exists, it is used to include a bunch of
|
|
||||||
; files from a glob(3) pattern. This directive can be used everywhere in the
|
|
||||||
; file.
|
|
||||||
include=/etc/php-fpm.d/*.conf
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;
|
||||||
; Global Options ;
|
; Global Options ;
|
||||||
;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;
|
||||||
@ -43,6 +38,24 @@ error_log = /var/log/php-fpm/error.log
|
|||||||
; Default Value: notice
|
; Default Value: notice
|
||||||
;log_level = notice
|
;log_level = notice
|
||||||
|
|
||||||
|
; Log limit on number of characters in the single line (log entry). If the
|
||||||
|
; line is over the limit, it is wrapped on multiple lines. The limit is for
|
||||||
|
; all logged characters including message prefix and suffix if present. However
|
||||||
|
; the new line character does not count into it as it is present only when
|
||||||
|
; logging to a file descriptor. It means the new line character is not present
|
||||||
|
; when logging to syslog.
|
||||||
|
; Default Value: 1024
|
||||||
|
;log_limit = 4096
|
||||||
|
|
||||||
|
; Log buffering specifies if the log line is buffered which means that the
|
||||||
|
; line is written in a single write operation. If the value is false, then the
|
||||||
|
; data is written directly into the file descriptor. It is an experimental
|
||||||
|
; option that can potentionaly improve logging performance and memory usage
|
||||||
|
; for some heavy logging scenarios. This option is ignored if logging to syslog
|
||||||
|
; as it has to be always buffered.
|
||||||
|
; Default value: yes
|
||||||
|
;log_buffering = no
|
||||||
|
|
||||||
; If this number of child processes exit with SIGSEGV or SIGBUS within the time
|
; If this number of child processes exit with SIGSEGV or SIGBUS within the time
|
||||||
; interval set by emergency_restart_interval then FPM will restart. A value
|
; interval set by emergency_restart_interval then FPM will restart. A value
|
||||||
; of '0' means 'Off'.
|
; of '0' means 'Off'.
|
||||||
@ -115,5 +128,8 @@ daemonize = yes
|
|||||||
; used in logs and stats. There is no limitation on the number of pools which
|
; used in logs and stats. There is no limitation on the number of pools which
|
||||||
; FPM can handle. Your system will tell you anyway :)
|
; FPM can handle. Your system will tell you anyway :)
|
||||||
|
|
||||||
; See /etc/php-fpm.d/*.conf
|
; Include one or more files. If glob(3) exists, it is used to include a bunch of
|
||||||
|
; files from a glob(3) pattern. This directive can be used everywhere in the
|
||||||
|
; file.
|
||||||
|
include=/etc/php-fpm.d/*.conf
|
||||||
|
|
780
php-keyring.gpg
Normal file
780
php-keyring.gpg
Normal file
@ -0,0 +1,780 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
|
||||||
|
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
|
||||||
|
=ilrq
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
@ -19,15 +19,13 @@ DirectoryIndex index.php
|
|||||||
#
|
#
|
||||||
# Redirect to local php-fpm (no mod_php in default configuration)
|
# Redirect to local php-fpm (no mod_php in default configuration)
|
||||||
#
|
#
|
||||||
<IfModule !mod_php5.c>
|
<IfModule !mod_php.c>
|
||||||
<IfModule !mod_php7.c>
|
|
||||||
# Enable http authorization headers
|
# Enable http authorization headers
|
||||||
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
|
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
|
||||||
|
|
||||||
<FilesMatch \.(php|phar)$>
|
<FilesMatch \.(php|phar)$>
|
||||||
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
|
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
|
||||||
</FilesMatch>
|
</FilesMatch>
|
||||||
</IfModule>
|
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|
||||||
#
|
#
|
||||||
@ -36,7 +34,7 @@ DirectoryIndex index.php
|
|||||||
#
|
#
|
||||||
# mod_php options
|
# mod_php options
|
||||||
#
|
#
|
||||||
<IfModule mod_php7.c>
|
<IfModule mod_php.c>
|
||||||
#
|
#
|
||||||
# Cause the PHP interpreter to handle files with a .php extension.
|
# Cause the PHP interpreter to handle files with a .php extension.
|
||||||
#
|
#
|
File diff suppressed because it is too large
Load Diff
@ -3,10 +3,11 @@
|
|||||||
# easy for developers to write dynamically generated webpages.
|
# easy for developers to write dynamically generated webpages.
|
||||||
#
|
#
|
||||||
|
|
||||||
# Cannot load both php5 and php7 modules
|
# Cannot load both php5, php7 and php modules
|
||||||
<IfModule !mod_php5.c>
|
<IfModule !mod_php5.c>
|
||||||
<IfModule prefork.c>
|
<IfModule !mod_php7.c>
|
||||||
LoadModule php7_module modules/libphp7.so
|
<IfModule prefork.c>
|
||||||
|
LoadModule php_module modules/libphp.so
|
||||||
|
</IfModule>
|
||||||
</IfModule>
|
</IfModule>
|
||||||
</IfModule>
|
</IfModule>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user