]> TLD Linux GIT Repositories - packages/php.git/commitdiff
- adjusted for rpm.org, partial PLD merge
authorMarcin Krol <hawk@tld-linux.org>
Mon, 4 Apr 2022 22:49:03 +0000 (00:49 +0200)
committerMarcin Krol <hawk@tld-linux.org>
Mon, 4 Apr 2022 22:49:03 +0000 (00:49 +0200)
19 files changed:
fix-test-run.patch
fpm-conf-split.patch [deleted file]
intl-stdc++.patch
mysql-lib-ver-mismatch.patch
openssl.patch [new file with mode: 0644]
php-config-dir.patch
php-db.patch
php-dba-link.patch
php-fcgi-error_log-no-newlines.patch [deleted file]
php-fcgi-graceful.patch
php-fpm-config.patch
php-link-libs.patch
php-mysql-ssl-context.patch [new file with mode: 0644]
php-oracle-instantclient.patch [new file with mode: 0644]
php-shared.patch
php-stupidapache_version.patch
php-systzdata.patch
php-zlib-for-getimagesize.patch
php.spec

index 01742c44c830c5f49304b852f40087aeb68ee22e..50bccd4dee98864baba30fcc80d481dfa87684cb 100644 (file)
@@ -1,15 +1,15 @@
 --- php-5.4.0alpha2/configure.ac~      2011-08-07 12:43:31.000000000 +0300
 +++ php-5.4.0alpha2/configure.ac       2011-08-07 12:44:11.495394662 +0300
 @@ -1271,6 +1271,9 @@
-   ;;
- esac
+   AC_DEFINE_UNQUOTED(ARCHITECTURE,"$PHP_BUILD_ARCH",[build architecture])
+ fi
  
 +# shift so that extensions like xml are loaded first
 +PHP_MODULES=$(echo "$PHP_MODULES" | sed -e 's,\(.*\)\(\$(phplibdir)/xml.la \),\2\1,')
 +
  PHP_SUBST_OLD(PHP_INSTALLED_SAPIS)
  
- PHP_SUBST(PHP_EXECUTABLE)
+ PHP_SUBST(PHP_FASTCGI_OBJS)
 --- php-5.5.11/build/Makefile.global   2014-04-27 15:05:38.963814051 +0300
 +++ php-5.5.11/build/Makefile.global   2014-04-27 15:09:54.438443707 +0300
 @@ -81,8 +81,15 @@
diff --git a/fpm-conf-split.patch b/fpm-conf-split.patch
deleted file mode 100644 (file)
index 3d4bd92..0000000
+++ /dev/null
@@ -1,871 +0,0 @@
---- php-5.6.5/sapi/fpm/php-fpm.conf.in~        2015-02-04 19:22:00.000000000 +0200
-+++ php-5.6.5/sapi/fpm/php-fpm.conf.in 2015-02-04 19:23:22.109298245 +0200
-@@ -6,14 +6,6 @@
- ; prefix (@prefix@). This prefix can be dynamically changed by using the
- ; '-p' argument from the command line.
--; 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.
--; Relative path can also be used. They will be prefixed by:
--;  - the global prefix if it's been set (-p argument)
--;  - @prefix@ otherwise
--;include=etc/fpm.d/*.conf
--
- ;;;;;;;;;;;;;;;;;;
- ; Global Options ;
- ;;;;;;;;;;;;;;;;;;
-@@ -115,415 +115,3 @@
- ; ports and different management options.  The name of the pool will be
- ; used in logs and stats. There is no limitation on the number of pools which
- ; FPM can handle. Your system will tell you anyway :)
--
--; Start a new pool named 'www'.
--; the variable $pool can we used in any directive and will be replaced by the
--; pool name ('www' here)
--[www]
--
--; Per pool prefix
--; It only applies on the following directives:
--; - 'access.log'
--; - 'slowlog'
--; - 'listen' (unixsocket)
--; - 'chroot'
--; - 'chdir'
--; - 'php_values'
--; - 'php_admin_values'
--; When not set, the global prefix (or @php_fpm_prefix@) applies instead.
--; Note: This directive can also be relative to the global prefix.
--; Default Value: none
--;prefix = /path/to/pools/$pool
--
--; Unix user/group of processes
--; Note: The user is mandatory. If the group is not set, the default user's group
--;       will be used.
--user = @php_fpm_user@
--group = @php_fpm_group@
--
--; The address on which to accept FastCGI requests.
--; Valid syntaxes are:
--;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
--;                            a specific port;
--;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
--;                            a specific port;
--;   'port'                 - to listen on a TCP socket to all IPv4 addresses on a
--;                            specific port;
--;   '[::]:port'            - to listen on a TCP socket to all addresses
--;                            (IPv6 and IPv4-mapped) on a specific port;
--;   '/path/to/unix/socket' - to listen on a unix socket.
--; Note: This value is mandatory.
--listen = 127.0.0.1:9000
--
--; Set listen(2) backlog.
--; Default Value: 65535 (-1 on FreeBSD and OpenBSD)
--;listen.backlog = 65535
--
--; Set permissions for unix socket, if one is used. In Linux, read/write
--; permissions must be set in order to allow connections from a web server. Many
--; BSD-derived systems allow connections regardless of permissions. 
--; Default Values: user and group are set as the running user
--;                 mode is set to 0660
--;listen.owner = @php_fpm_user@
--;listen.group = @php_fpm_group@
--;listen.mode = 0660
--; When POSIX Access Control Lists are supported you can set them using
--; these options, value is a comma separated list of user/group names.
--; When set, listen.owner and listen.group are ignored
--;listen.acl_users =
--;listen.acl_groups =
-- 
--; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
--; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
--; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
--; must be separated by a comma. If this value is left blank, connections will be
--; accepted from any ip address.
--; Default Value: any
--;listen.allowed_clients = 127.0.0.1
--
--; Specify the nice(2) priority to apply to the pool processes (only if set)
--; The value can vary from -19 (highest priority) to 20 (lower priority)
--; Note: - It will only work if the FPM master process is launched as root
--;       - The pool processes will inherit the master process priority
--;         unless it specified otherwise
--; Default Value: no set
--; process.priority = -19
--
--; Choose how the process manager will control the number of child processes.
--; Possible Values:
--;   static  - a fixed number (pm.max_children) of child processes;
--;   dynamic - the number of child processes are set dynamically based on the
--;             following directives. With this process management, there will be
--;             always at least 1 children.
--;             pm.max_children      - the maximum number of children that can
--;                                    be alive at the same time.
--;             pm.start_servers     - the number of children created on startup.
--;             pm.min_spare_servers - the minimum number of children in 'idle'
--;                                    state (waiting to process). If the number
--;                                    of 'idle' processes is less than this
--;                                    number then some children will be created.
--;             pm.max_spare_servers - the maximum number of children in 'idle'
--;                                    state (waiting to process). If the number
--;                                    of 'idle' processes is greater than this
--;                                    number then some children will be killed.
--;  ondemand - no children are created at startup. Children will be forked when
--;             new requests will connect. The following parameter are used:
--;             pm.max_children           - the maximum number of children that
--;                                         can be alive at the same time.
--;             pm.process_idle_timeout   - The number of seconds after which
--;                                         an idle process will be killed.
--; Note: This value is mandatory.
--pm = dynamic
--
--; The number of child processes to be created when pm is set to 'static' and the
--; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
--; This value sets the limit on the number of simultaneous requests that will be
--; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
--; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
--; CGI. The below defaults are based on a server without much resources. Don't
--; forget to tweak pm.* to fit your needs.
--; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
--; Note: This value is mandatory.
--pm.max_children = 5
--
--; The number of child processes created on startup.
--; Note: Used only when pm is set to 'dynamic'
--; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
--pm.start_servers = 2
--
--; The desired minimum number of idle server processes.
--; Note: Used only when pm is set to 'dynamic'
--; Note: Mandatory when pm is set to 'dynamic'
--pm.min_spare_servers = 1
--
--; The desired maximum number of idle server processes.
--; Note: Used only when pm is set to 'dynamic'
--; Note: Mandatory when pm is set to 'dynamic'
--pm.max_spare_servers = 3
--
--; The number of seconds after which an idle process will be killed.
--; Note: Used only when pm is set to 'ondemand'
--; Default Value: 10s
--;pm.process_idle_timeout = 10s;
-- 
--; The number of requests each child process should execute before respawning.
--; This can be useful to work around memory leaks in 3rd party libraries. For
--; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
--; Default Value: 0
--;pm.max_requests = 500
--
--; The URI to view the FPM status page. If this value is not set, no URI will be
--; recognized as a status page. It shows the following informations:
--;   pool                 - the name of the pool;
--;   process manager      - static, dynamic or ondemand;
--;   start time           - the date and time FPM has started;
--;   start since          - number of seconds since FPM has started;
--;   accepted conn        - the number of request accepted by the pool;
--;   listen queue         - the number of request in the queue of pending
--;                          connections (see backlog in listen(2));
--;   max listen queue     - the maximum number of requests in the queue
--;                          of pending connections since FPM has started;
--;   listen queue len     - the size of the socket queue of pending connections;
--;   idle processes       - the number of idle processes;
--;   active processes     - the number of active processes;
--;   total processes      - the number of idle + active processes;
--;   max active processes - the maximum number of active processes since FPM
--;                          has started;
--;   max children reached - number of times, the process limit has been reached,
--;                          when pm tries to start more children (works only for
--;                          pm 'dynamic' and 'ondemand');
--; Value are updated in real time.
--; Example output:
--;   pool:                 www
--;   process manager:      static
--;   start time:           01/Jul/2011:17:53:49 +0200
--;   start since:          62636
--;   accepted conn:        190460
--;   listen queue:         0
--;   max listen queue:     1
--;   listen queue len:     42
--;   idle processes:       4
--;   active processes:     11
--;   total processes:      15
--;   max active processes: 12
--;   max children reached: 0
--;
--; By default the status page output is formatted as text/plain. Passing either
--; 'html', 'xml' or 'json' in the query string will return the corresponding
--; output syntax. Example:
--;   http://www.foo.bar/status
--;   http://www.foo.bar/status?json
--;   http://www.foo.bar/status?html
--;   http://www.foo.bar/status?xml
--;
--; By default the status page only outputs short status. Passing 'full' in the
--; query string will also return status for each pool process.
--; Example: 
--;   http://www.foo.bar/status?full
--;   http://www.foo.bar/status?json&full
--;   http://www.foo.bar/status?html&full
--;   http://www.foo.bar/status?xml&full
--; The Full status returns for each process:
--;   pid                  - the PID of the process;
--;   state                - the state of the process (Idle, Running, ...);
--;   start time           - the date and time the process has started;
--;   start since          - the number of seconds since the process has started;
--;   requests             - the number of requests the process has served;
--;   request duration     - the duration in µs of the requests;
--;   request method       - the request method (GET, POST, ...);
--;   request URI          - the request URI with the query string;
--;   content length       - the content length of the request (only with POST);
--;   user                 - the user (PHP_AUTH_USER) (or '-' if not set);
--;   script               - the main script called (or '-' if not set);
--;   last request cpu     - the %cpu the last request consumed
--;                          it's always 0 if the process is not in Idle state
--;                          because CPU calculation is done when the request
--;                          processing has terminated;
--;   last request memory  - the max amount of memory the last request consumed
--;                          it's always 0 if the process is not in Idle state
--;                          because memory calculation is done when the request
--;                          processing has terminated;
--; If the process is in Idle state, then informations are related to the
--; last request the process has served. Otherwise informations are related to
--; the current request being served.
--; Example output:
--;   ************************
--;   pid:                  31330
--;   state:                Running
--;   start time:           01/Jul/2011:17:53:49 +0200
--;   start since:          63087
--;   requests:             12808
--;   request duration:     1250261
--;   request method:       GET
--;   request URI:          /test_mem.php?N=10000
--;   content length:       0
--;   user:                 -
--;   script:               /home/fat/web/docs/php/test_mem.php
--;   last request cpu:     0.00
--;   last request memory:  0
--;
--; Note: There is a real-time FPM status monitoring sample web page available
--;       It's available in: @EXPANDED_DATADIR@/fpm/status.html
--;
--; Note: The value must start with a leading slash (/). The value can be
--;       anything, but it may not be a good idea to use the .php extension or it
--;       may conflict with a real PHP file.
--; Default Value: not set 
--;pm.status_path = /status
-- 
--; 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
--; that FPM is alive and responding, or to
--; - create a graph of FPM availability (rrd or such);
--; - remove a server from a group if it is not responding (load balancing);
--; - trigger alerts for the operating team (24/7).
--; Note: The value must start with a leading slash (/). The value can be
--;       anything, but it may not be a good idea to use the .php extension or it
--;       may conflict with a real PHP file.
--; Default Value: not set
--;ping.path = /ping
--
--; This directive may be used to customize the response of a ping request. The
--; response is formatted as text/plain with a 200 response code.
--; Default Value: pong
--;ping.response = pong
--
--; The access log file
--; Default: not set
--;access.log = log/$pool.access.log
--
--; The access log format.
--; The following syntax is allowed
--;  %%: the '%' character
--;  %C: %CPU used by the request
--;      it can accept the following format:
--;      - %{user}C for user CPU only
--;      - %{system}C for system CPU only
--;      - %{total}C  for user + system CPU (default)
--;  %d: time taken to serve the request
--;      it can accept the following format:
--;      - %{seconds}d (default)
--;      - %{miliseconds}d
--;      - %{mili}d
--;      - %{microseconds}d
--;      - %{micro}d
--;  %e: an environment variable (same as $_ENV or $_SERVER)
--;      it must be associated with embraces to specify the name of the env
--;      variable. Some exemples:
--;      - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
--;      - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
--;  %f: script filename
--;  %l: content-length of the request (for POST request only)
--;  %m: request method
--;  %M: peak of memory allocated by PHP
--;      it can accept the following format:
--;      - %{bytes}M (default)
--;      - %{kilobytes}M
--;      - %{kilo}M
--;      - %{megabytes}M
--;      - %{mega}M
--;  %n: pool name
--;  %o: output header
--;      it must be associated with embraces to specify the name of the header:
--;      - %{Content-Type}o
--;      - %{X-Powered-By}o
--;      - %{Transfert-Encoding}o
--;      - ....
--;  %p: PID of the child that serviced the request
--;  %P: PID of the parent of the child that serviced the request
--;  %q: the query string 
--;  %Q: the '?' character if query string exists
--;  %r: the request URI (without the query string, see %q and %Q)
--;  %R: remote IP address
--;  %s: status (response code)
--;  %t: server time the request was received
--;      it can accept a strftime(3) format:
--;      %d/%b/%Y:%H:%M:%S %z (default)
--;  %T: time the log has been written (the request has finished)
--;      it can accept a strftime(3) format:
--;      %d/%b/%Y:%H:%M:%S %z (default)
--;  %u: remote user
--;
--; Default: "%R - %u %t \"%m %r\" %s"
--;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
-- 
--; The log file for slow requests
--; Default Value: not set
--; Note: slowlog is mandatory if request_slowlog_timeout is set
--;slowlog = log/$pool.log.slow
-- 
--; The timeout for serving a single request after which a PHP backtrace will be
--; dumped to the 'slowlog' file. A value of '0s' means 'off'.
--; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
--; Default Value: 0
--;request_slowlog_timeout = 0
-- 
--; 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
--; 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)
--; Default Value: 0
--;request_terminate_timeout = 0
-- 
--; Set open file descriptor rlimit.
--; Default Value: system defined value
--;rlimit_files = 1024
-- 
--; Set max core size rlimit.
--; Possible Values: 'unlimited' or an integer greater or equal to 0
--; Default Value: system defined value
--;rlimit_core = 0
-- 
--; 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.
--; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
--; of its subdirectories. If the pool prefix is not set, the global prefix
--; will be used instead.
--; Note: chrooting is a great security feature and should be used whenever 
--;       possible. However, all PHP paths will be relative to the chroot
--;       (error_log, sessions.save_path, ...).
--; Default Value: not set
--;chroot = 
-- 
--; Chdir to this directory at the start.
--; Note: relative path can be used.
--; Default Value: current directory or / when chroot
--;chdir = /var/www
-- 
--; 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.
--; Note: on highloaded environement, this can cause some delay in the page
--; process time (several ms).
--; Default Value: no
--;catch_workers_output = yes
--
--; Clear environment in FPM workers
--; Prevents arbitrary environment variables from reaching FPM worker processes
--; by clearing the environment in workers before env vars specified in this
--; pool configuration are added.
--; Setting to "no" will make all environment variables available to PHP code
--; via getenv(), $_ENV and $_SERVER.
--; Default Value: yes
--;clear_env = no
--
--; 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
--; FPM to .php extensions to prevent malicious users to use other extensions to
--; exectute php code.
--; Note: set an empty value to allow all extensions.
--; Default Value: .php
--;security.limit_extensions = .php .php3 .php4 .php5
-- 
--; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
--; the current environment.
--; Default Value: clean env
--;env[HOSTNAME] = $HOSTNAME
--;env[PATH] = /usr/local/bin:/usr/bin:/bin
--;env[TMP] = /tmp
--;env[TMPDIR] = /tmp
--;env[TEMP] = /tmp
--
--; Additional php.ini defines, specific to this pool of workers. These settings
--; overwrite the values previously defined in the php.ini. The directives are the
--; same as the PHP SAPI:
--;   php_value/php_flag             - you can set classic ini defines which can
--;                                    be overwritten from PHP call 'ini_set'. 
--;   php_admin_value/php_admin_flag - these directives won't be overwritten by
--;                                     PHP call 'ini_set'
--; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
--
--; Defining 'extension' will load the corresponding shared extension from
--; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
--; overwrite previously defined php.ini values, but will append the new value
--; instead.
--
--; Note: path INI options can be relative and will be expanded with the prefix
--; (pool, global or @prefix@)
--
--; Default Value: nothing is defined by default except the values in php.ini and
--;                specified at startup with the -d argument
--;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
--;php_flag[display_errors] = off
--;php_admin_value[error_log] = /var/log/fpm-php.www.log
--;php_admin_flag[log_errors] = on
--;php_admin_value[memory_limit] = 32M
---- /dev/null  2007-02-13 18:29:53.000000000 +0200
-+++ php-5.6.5/sapi/fpm/php-fpm.conf-d.in       2015-02-04 19:23:20.709225773 +0200
-@@ -0,0 +1,411 @@
-+; Start a new pool named 'www'.
-+; the variable $pool can we used in any directive and will be replaced by the
-+; pool name ('www' here)
-+[www]
-+
-+; Per pool prefix
-+; It only applies on the following directives:
-+; - 'access.log'
-+; - 'slowlog'
-+; - 'listen' (unixsocket)
-+; - 'chroot'
-+; - 'chdir'
-+; - 'php_values'
-+; - 'php_admin_values'
-+; When not set, the global prefix (or @php_fpm_prefix@) applies instead.
-+; Note: This directive can also be relative to the global prefix.
-+; Default Value: none
-+;prefix = /path/to/pools/$pool
-+
-+; Unix user/group of processes
-+; Note: The user is mandatory. If the group is not set, the default user's group
-+;       will be used.
-+user = @php_fpm_user@
-+group = @php_fpm_group@
-+
-+; The address on which to accept FastCGI requests.
-+; Valid syntaxes are:
-+;   'ip.add.re.ss:port'    - to listen on a TCP socket to a specific IPv4 address on
-+;                            a specific port;
-+;   '[ip:6:addr:ess]:port' - to listen on a TCP socket to a specific IPv6 address on
-+;                            a specific port;
-+;   'port'                 - to listen on a TCP socket to all IPv4 addresses on a
-+;                            specific port;
-+;   '[::]:port'            - to listen on a TCP socket to all addresses
-+;                            (IPv6 and IPv4-mapped) on a specific port;
-+;   '/path/to/unix/socket' - to listen on a unix socket.
-+; Note: This value is mandatory.
-+listen = 127.0.0.1:9000
-+
-+; Set listen(2) backlog.
-+; Default Value: 65535 (-1 on FreeBSD and OpenBSD)
-+;listen.backlog = 65535
-+
-+; Set permissions for unix socket, if one is used. In Linux, read/write
-+; permissions must be set in order to allow connections from a web server. Many
-+; BSD-derived systems allow connections regardless of permissions. 
-+; Default Values: user and group are set as the running user
-+;                 mode is set to 0660
-+;listen.owner = @php_fpm_user@
-+;listen.group = @php_fpm_group@
-+;listen.mode = 0660
-+; When POSIX Access Control Lists are supported you can set them using
-+; these options, value is a comma separated list of user/group names.
-+; When set, listen.owner and listen.group are ignored
-+;listen.acl_users =
-+;listen.acl_groups =
-+ 
-+; List of addresses (IPv4/IPv6) of FastCGI clients which are allowed to connect.
-+; Equivalent to the FCGI_WEB_SERVER_ADDRS environment variable in the original
-+; PHP FCGI (5.2.2+). Makes sense only with a tcp listening socket. Each address
-+; must be separated by a comma. If this value is left blank, connections will be
-+; accepted from any ip address.
-+; Default Value: any
-+;listen.allowed_clients = 127.0.0.1
-+
-+; Specify the nice(2) priority to apply to the pool processes (only if set)
-+; The value can vary from -19 (highest priority) to 20 (lower priority)
-+; Note: - It will only work if the FPM master process is launched as root
-+;       - The pool processes will inherit the master process priority
-+;         unless it specified otherwise
-+; Default Value: no set
-+; process.priority = -19
-+
-+; Choose how the process manager will control the number of child processes.
-+; Possible Values:
-+;   static  - a fixed number (pm.max_children) of child processes;
-+;   dynamic - the number of child processes are set dynamically based on the
-+;             following directives. With this process management, there will be
-+;             always at least 1 children.
-+;             pm.max_children      - the maximum number of children that can
-+;                                    be alive at the same time.
-+;             pm.start_servers     - the number of children created on startup.
-+;             pm.min_spare_servers - the minimum number of children in 'idle'
-+;                                    state (waiting to process). If the number
-+;                                    of 'idle' processes is less than this
-+;                                    number then some children will be created.
-+;             pm.max_spare_servers - the maximum number of children in 'idle'
-+;                                    state (waiting to process). If the number
-+;                                    of 'idle' processes is greater than this
-+;                                    number then some children will be killed.
-+;  ondemand - no children are created at startup. Children will be forked when
-+;             new requests will connect. The following parameter are used:
-+;             pm.max_children           - the maximum number of children that
-+;                                         can be alive at the same time.
-+;             pm.process_idle_timeout   - The number of seconds after which
-+;                                         an idle process will be killed.
-+; Note: This value is mandatory.
-+pm = dynamic
-+
-+; The number of child processes to be created when pm is set to 'static' and the
-+; maximum number of child processes when pm is set to 'dynamic' or 'ondemand'.
-+; This value sets the limit on the number of simultaneous requests that will be
-+; served. Equivalent to the ApacheMaxClients directive with mpm_prefork.
-+; Equivalent to the PHP_FCGI_CHILDREN environment variable in the original PHP
-+; CGI. The below defaults are based on a server without much resources. Don't
-+; forget to tweak pm.* to fit your needs.
-+; Note: Used when pm is set to 'static', 'dynamic' or 'ondemand'
-+; Note: This value is mandatory.
-+pm.max_children = 5
-+
-+; The number of child processes created on startup.
-+; Note: Used only when pm is set to 'dynamic'
-+; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2
-+pm.start_servers = 2
-+
-+; The desired minimum number of idle server processes.
-+; Note: Used only when pm is set to 'dynamic'
-+; Note: Mandatory when pm is set to 'dynamic'
-+pm.min_spare_servers = 1
-+
-+; The desired maximum number of idle server processes.
-+; Note: Used only when pm is set to 'dynamic'
-+; Note: Mandatory when pm is set to 'dynamic'
-+pm.max_spare_servers = 3
-+
-+; The number of seconds after which an idle process will be killed.
-+; Note: Used only when pm is set to 'ondemand'
-+; Default Value: 10s
-+;pm.process_idle_timeout = 10s;
-+ 
-+; The number of requests each child process should execute before respawning.
-+; This can be useful to work around memory leaks in 3rd party libraries. For
-+; endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS.
-+; Default Value: 0
-+;pm.max_requests = 500
-+
-+; The URI to view the FPM status page. If this value is not set, no URI will be
-+; recognized as a status page. It shows the following informations:
-+;   pool                 - the name of the pool;
-+;   process manager      - static, dynamic or ondemand;
-+;   start time           - the date and time FPM has started;
-+;   start since          - number of seconds since FPM has started;
-+;   accepted conn        - the number of request accepted by the pool;
-+;   listen queue         - the number of request in the queue of pending
-+;                          connections (see backlog in listen(2));
-+;   max listen queue     - the maximum number of requests in the queue
-+;                          of pending connections since FPM has started;
-+;   listen queue len     - the size of the socket queue of pending connections;
-+;   idle processes       - the number of idle processes;
-+;   active processes     - the number of active processes;
-+;   total processes      - the number of idle + active processes;
-+;   max active processes - the maximum number of active processes since FPM
-+;                          has started;
-+;   max children reached - number of times, the process limit has been reached,
-+;                          when pm tries to start more children (works only for
-+;                          pm 'dynamic' and 'ondemand');
-+; Value are updated in real time.
-+; Example output:
-+;   pool:                 www
-+;   process manager:      static
-+;   start time:           01/Jul/2011:17:53:49 +0200
-+;   start since:          62636
-+;   accepted conn:        190460
-+;   listen queue:         0
-+;   max listen queue:     1
-+;   listen queue len:     42
-+;   idle processes:       4
-+;   active processes:     11
-+;   total processes:      15
-+;   max active processes: 12
-+;   max children reached: 0
-+;
-+; By default the status page output is formatted as text/plain. Passing either
-+; 'html', 'xml' or 'json' in the query string will return the corresponding
-+; output syntax. Example:
-+;   http://www.foo.bar/status
-+;   http://www.foo.bar/status?json
-+;   http://www.foo.bar/status?html
-+;   http://www.foo.bar/status?xml
-+;
-+; By default the status page only outputs short status. Passing 'full' in the
-+; query string will also return status for each pool process.
-+; Example: 
-+;   http://www.foo.bar/status?full
-+;   http://www.foo.bar/status?json&full
-+;   http://www.foo.bar/status?html&full
-+;   http://www.foo.bar/status?xml&full
-+; The Full status returns for each process:
-+;   pid                  - the PID of the process;
-+;   state                - the state of the process (Idle, Running, ...);
-+;   start time           - the date and time the process has started;
-+;   start since          - the number of seconds since the process has started;
-+;   requests             - the number of requests the process has served;
-+;   request duration     - the duration in µs of the requests;
-+;   request method       - the request method (GET, POST, ...);
-+;   request URI          - the request URI with the query string;
-+;   content length       - the content length of the request (only with POST);
-+;   user                 - the user (PHP_AUTH_USER) (or '-' if not set);
-+;   script               - the main script called (or '-' if not set);
-+;   last request cpu     - the %cpu the last request consumed
-+;                          it's always 0 if the process is not in Idle state
-+;                          because CPU calculation is done when the request
-+;                          processing has terminated;
-+;   last request memory  - the max amount of memory the last request consumed
-+;                          it's always 0 if the process is not in Idle state
-+;                          because memory calculation is done when the request
-+;                          processing has terminated;
-+; If the process is in Idle state, then informations are related to the
-+; last request the process has served. Otherwise informations are related to
-+; the current request being served.
-+; Example output:
-+;   ************************
-+;   pid:                  31330
-+;   state:                Running
-+;   start time:           01/Jul/2011:17:53:49 +0200
-+;   start since:          63087
-+;   requests:             12808
-+;   request duration:     1250261
-+;   request method:       GET
-+;   request URI:          /test_mem.php?N=10000
-+;   content length:       0
-+;   user:                 -
-+;   script:               /home/fat/web/docs/php/test_mem.php
-+;   last request cpu:     0.00
-+;   last request memory:  0
-+;
-+; Note: There is a real-time FPM status monitoring sample web page available
-+;       It's available in: @EXPANDED_DATADIR@/fpm/status.html
-+;
-+; Note: The value must start with a leading slash (/). The value can be
-+;       anything, but it may not be a good idea to use the .php extension or it
-+;       may conflict with a real PHP file.
-+; Default Value: not set 
-+;pm.status_path = /status
-+ 
-+; 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
-+; that FPM is alive and responding, or to
-+; - create a graph of FPM availability (rrd or such);
-+; - remove a server from a group if it is not responding (load balancing);
-+; - trigger alerts for the operating team (24/7).
-+; Note: The value must start with a leading slash (/). The value can be
-+;       anything, but it may not be a good idea to use the .php extension or it
-+;       may conflict with a real PHP file.
-+; Default Value: not set
-+;ping.path = /ping
-+
-+; This directive may be used to customize the response of a ping request. The
-+; response is formatted as text/plain with a 200 response code.
-+; Default Value: pong
-+;ping.response = pong
-+
-+; The access log file
-+; Default: not set
-+;access.log = log/$pool.access.log
-+
-+; The access log format.
-+; The following syntax is allowed
-+;  %%: the '%' character
-+;  %C: %CPU used by the request
-+;      it can accept the following format:
-+;      - %{user}C for user CPU only
-+;      - %{system}C for system CPU only
-+;      - %{total}C  for user + system CPU (default)
-+;  %d: time taken to serve the request
-+;      it can accept the following format:
-+;      - %{seconds}d (default)
-+;      - %{miliseconds}d
-+;      - %{mili}d
-+;      - %{microseconds}d
-+;      - %{micro}d
-+;  %e: an environment variable (same as $_ENV or $_SERVER)
-+;      it must be associated with embraces to specify the name of the env
-+;      variable. Some exemples:
-+;      - server specifics like: %{REQUEST_METHOD}e or %{SERVER_PROTOCOL}e
-+;      - HTTP headers like: %{HTTP_HOST}e or %{HTTP_USER_AGENT}e
-+;  %f: script filename
-+;  %l: content-length of the request (for POST request only)
-+;  %m: request method
-+;  %M: peak of memory allocated by PHP
-+;      it can accept the following format:
-+;      - %{bytes}M (default)
-+;      - %{kilobytes}M
-+;      - %{kilo}M
-+;      - %{megabytes}M
-+;      - %{mega}M
-+;  %n: pool name
-+;  %o: output header
-+;      it must be associated with embraces to specify the name of the header:
-+;      - %{Content-Type}o
-+;      - %{X-Powered-By}o
-+;      - %{Transfert-Encoding}o
-+;      - ....
-+;  %p: PID of the child that serviced the request
-+;  %P: PID of the parent of the child that serviced the request
-+;  %q: the query string 
-+;  %Q: the '?' character if query string exists
-+;  %r: the request URI (without the query string, see %q and %Q)
-+;  %R: remote IP address
-+;  %s: status (response code)
-+;  %t: server time the request was received
-+;      it can accept a strftime(3) format:
-+;      %d/%b/%Y:%H:%M:%S %z (default)
-+;  %T: time the log has been written (the request has finished)
-+;      it can accept a strftime(3) format:
-+;      %d/%b/%Y:%H:%M:%S %z (default)
-+;  %u: remote user
-+;
-+; Default: "%R - %u %t \"%m %r\" %s"
-+;access.format = "%R - %u %t \"%m %r%Q%q\" %s %f %{mili}d %{kilo}M %C%%"
-+ 
-+; The log file for slow requests
-+; Default Value: not set
-+; Note: slowlog is mandatory if request_slowlog_timeout is set
-+;slowlog = log/$pool.log.slow
-+ 
-+; The timeout for serving a single request after which a PHP backtrace will be
-+; dumped to the 'slowlog' file. A value of '0s' means 'off'.
-+; Available units: s(econds)(default), m(inutes), h(ours), or d(ays)
-+; Default Value: 0
-+;request_slowlog_timeout = 0
-+ 
-+; 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
-+; 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)
-+; Default Value: 0
-+;request_terminate_timeout = 0
-+ 
-+; Set open file descriptor rlimit.
-+; Default Value: system defined value
-+;rlimit_files = 1024
-+ 
-+; Set max core size rlimit.
-+; Possible Values: 'unlimited' or an integer greater or equal to 0
-+; Default Value: system defined value
-+;rlimit_core = 0
-+ 
-+; 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.
-+; Note: you can prefix with '$prefix' to chroot to the pool prefix or one
-+; of its subdirectories. If the pool prefix is not set, the global prefix
-+; will be used instead.
-+; Note: chrooting is a great security feature and should be used whenever 
-+;       possible. However, all PHP paths will be relative to the chroot
-+;       (error_log, sessions.save_path, ...).
-+; Default Value: not set
-+;chroot = 
-+ 
-+; Chdir to this directory at the start.
-+; Note: relative path can be used.
-+; Default Value: current directory or / when chroot
-+;chdir = /var/www
-+ 
-+; 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.
-+; Note: on highloaded environement, this can cause some delay in the page
-+; process time (several ms).
-+; Default Value: no
-+;catch_workers_output = yes
-+
-+; Clear environment in FPM workers
-+; Prevents arbitrary environment variables from reaching FPM worker processes
-+; by clearing the environment in workers before env vars specified in this
-+; pool configuration are added.
-+; Setting to "no" will make all environment variables available to PHP code
-+; via getenv(), $_ENV and $_SERVER.
-+; Default Value: yes
-+;clear_env = no
-+
-+; 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
-+; FPM to .php extensions to prevent malicious users to use other extensions to
-+; exectute php code.
-+; Note: set an empty value to allow all extensions.
-+; Default Value: .php
-+;security.limit_extensions = .php .php3 .php4 .php5
-+ 
-+; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from
-+; the current environment.
-+; Default Value: clean env
-+;env[HOSTNAME] = $HOSTNAME
-+;env[PATH] = /usr/local/bin:/usr/bin:/bin
-+;env[TMP] = /tmp
-+;env[TMPDIR] = /tmp
-+;env[TEMP] = /tmp
-+
-+; Additional php.ini defines, specific to this pool of workers. These settings
-+; overwrite the values previously defined in the php.ini. The directives are the
-+; same as the PHP SAPI:
-+;   php_value/php_flag             - you can set classic ini defines which can
-+;                                    be overwritten from PHP call 'ini_set'. 
-+;   php_admin_value/php_admin_flag - these directives won't be overwritten by
-+;                                     PHP call 'ini_set'
-+; For php_*flag, valid values are on, off, 1, 0, true, false, yes or no.
-+
-+; Defining 'extension' will load the corresponding shared extension from
-+; extension_dir. Defining 'disable_functions' or 'disable_classes' will not
-+; overwrite previously defined php.ini values, but will append the new value
-+; instead.
-+
-+; Note: path INI options can be relative and will be expanded with the prefix
-+; (pool, global or @prefix@)
-+
-+; Default Value: nothing is defined by default except the values in php.ini and
-+;                specified at startup with the -d argument
-+;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
-+;php_flag[display_errors] = off
-+;php_admin_value[error_log] = /var/log/fpm-php.www.log
-+;php_admin_flag[log_errors] = on
-+;php_admin_value[memory_limit] = 32M
---- php-5.5.7/sapi/fpm/config.m4~      2013-12-16 17:57:03.000000000 +0200
-+++ php-5.5.7/sapi/fpm/config.m4       2013-12-16 18:00:34.936527309 +0200
-@@ -609,7 +609,7 @@
-   PHP_ADD_BUILD_DIR(sapi/fpm/fpm)
-   PHP_ADD_BUILD_DIR(sapi/fpm/fpm/events)
--  PHP_OUTPUT(sapi/fpm/php-fpm.conf sapi/fpm/init.d.php-fpm sapi/fpm/php-fpm.service sapi/fpm/php-fpm.8 sapi/fpm/status.html)
-+  PHP_OUTPUT(sapi/fpm/php-fpm.conf sapi/fpm/php-fpm.conf-d sapi/fpm/init.d.php-fpm sapi/fpm/php-fpm.service sapi/fpm/php-fpm.8 sapi/fpm/status.html)
-   PHP_ADD_MAKEFILE_FRAGMENT([$abs_srcdir/sapi/fpm/Makefile.frag])
-   SAPI_FPM_PATH=sapi/fpm/php-fpm
---- php-5.6.2/sapi/fpm/Makefile.frag~  2014-10-15 15:59:32.000000000 +0300
-+++ php-5.6.2/sapi/fpm/Makefile.frag   2014-10-27 08:12:57.402883790 +0200
-@@ -11,8 +11,9 @@
-       @$(INSTALL) -m 0755 $(SAPI_FPM_PATH) $(INSTALL_ROOT)$(sbindir)/$(program_prefix)php-fpm$(program_suffix)$(EXEEXT)
-       @echo "Installing PHP FPM config:        $(INSTALL_ROOT)$(sysconfdir)/" && \
--      $(mkinstalldirs) $(INSTALL_ROOT)$(sysconfdir) || :
-+      $(mkinstalldirs) $(INSTALL_ROOT)$(sysconfdir)/fpm.d || :
-       @$(INSTALL_DATA) sapi/fpm/php-fpm.conf $(INSTALL_ROOT)$(sysconfdir)/php-fpm.conf.default || :
-+      @$(INSTALL_DATA) sapi/fpm/php-fpm.conf-d $(INSTALL_ROOT)$(sysconfdir)/fpm.d/www.conf.default || :
-       @echo "Installing PHP FPM man page:      $(INSTALL_ROOT)$(mandir)/man8/"
-       @$(mkinstalldirs) $(INSTALL_ROOT)$(mandir)/man8
index 7c180641f40c3b01420b61d23cdc766dc8cc5a21..3ad69f06c57ba60c4c6ffbaad970aee8bc770294 100644 (file)
@@ -17,10 +17,10 @@ so just omit PHP_ADD_LIBRARY(stdc++)
 --- php-7.0.6/ext/intl/config.m4~      2016-04-28 21:13:06.000000000 +0300
 +++ php-7.0.6/ext/intl/config.m4       2016-05-16 18:49:53.909531704 +0300
 @@ -6,6 +6,7 @@
[  --enable-intl           Enable internationalization support])
    [Enable internationalization support])])
  
  if test "$PHP_INTL" != "no"; then
 +  dnl -lstdc++ not needed, will be inherited from icu
    PHP_SETUP_ICU(INTL_SHARED_LIBADD)
    PHP_SUBST(INTL_SHARED_LIBADD)
-   PHP_REQUIRE_CXX()
+   INTL_COMMON_FLAGS="$ICU_CFLAGS -Wno-write-strings -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1"
index 81d9261e91a4780dbaeca2c18a89f9de8d7041aa..4ebe277fa5f044bd0b26341849669ded8998087a 100644 (file)
@@ -1,11 +1,11 @@
 --- php-5.3.27/ext/mysqli/mysqli_nonapi.c~     2013-11-20 00:19:11.000000000 +0200
 +++ php-5.3.27/ext/mysqli/mysqli_nonapi.c      2013-11-20 00:19:44.725872552 +0200
 @@ -73,7 +73,7 @@
-       zend_bool                       self_alloced = 0;
+       zend_bool                       self_alloced = 0;
+
+
 -#if !defined(MYSQL_USE_MYSQLND)
 +#if 0 && !defined(MYSQL_USE_MYSQLND)
        if ((MYSQL_VERSION_ID / 100) != (mysql_get_client_version() / 100)) {
-               php_error_docref(NULL TSRMLS_CC, E_NOTICE,
+               php_error_docref(NULL, E_WARNING,
                                                "Headers and client library minor version mismatch. Headers:%d Library:%ld",
diff --git a/openssl.patch b/openssl.patch
new file mode 100644 (file)
index 0000000..25c11d8
--- /dev/null
@@ -0,0 +1,38 @@
+--- php-8.0.8/ext/openssl/openssl.c~   2021-06-29 09:41:19.000000000 +0200
++++ php-8.0.8/ext/openssl/openssl.c    2021-10-23 20:39:04.743124767 +0200
+@@ -1221,7 +1221,9 @@ PHP_MINIT_FUNCTION(openssl)
+       REGISTER_LONG_CONSTANT("OPENSSL_CMS_NOSIGS", CMS_NOSIGS, CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("OPENSSL_PKCS1_PADDING", RSA_PKCS1_PADDING, CONST_CS|CONST_PERSISTENT);
++#ifdef RSA_SSLV23_PADDING
+       REGISTER_LONG_CONSTANT("OPENSSL_SSLV23_PADDING", RSA_SSLV23_PADDING, CONST_CS|CONST_PERSISTENT);
++#endif
+       REGISTER_LONG_CONSTANT("OPENSSL_NO_PADDING", RSA_NO_PADDING, CONST_CS|CONST_PERSISTENT);
+       REGISTER_LONG_CONSTANT("OPENSSL_PKCS1_OAEP_PADDING", RSA_PKCS1_OAEP_PADDING, CONST_CS|CONST_PERSISTENT);
+diff --git a/ext/openssl/xp_ssl.c b/ext/openssl/xp_ssl.c
+index 5564bf6f08..423f696c76 100644
+--- a/ext/openssl/xp_ssl.c
++++ b/ext/openssl/xp_ssl.c
+@@ -1286,6 +1286,10 @@ static int php_openssl_set_server_specific_opts(php_stream *stream, SSL_CTX *ctx
+       zval *zv;
+       long ssl_ctx_options = SSL_CTX_get_options(ctx);
++#ifdef SSL_OP_IGNORE_UNEXPECTED_EOF
++      ssl_ctx_options |= SSL_OP_IGNORE_UNEXPECTED_EOF;
++#endif
++
+ #if defined(HAVE_ECDH) && PHP_OPENSSL_API_VERSION < 0x10100
+       if (php_openssl_set_server_ecdh_curve(stream, ctx) == FAILURE) {
+               return FAILURE;
+@@ -1628,6 +1632,10 @@ int php_openssl_setup_crypto(php_stream *stream,
+       ssl_ctx_options = SSL_OP_ALL;
+ #endif
++#ifdef SSL_OP_IGNORE_UNEXPECTED_EOF
++      ssl_ctx_options |= SSL_OP_IGNORE_UNEXPECTED_EOF;
++#endif
++
+       if (sslsock->ctx == NULL) {
+               php_error_docref(NULL, E_WARNING, "SSL context creation failure");
+               return FAILURE;
index b6abad556b3ecf5b1609d9c013ffc65292339ff3..05158a347ceecce84edf045c1a2e7e50ea5d8ef4 100644 (file)
@@ -1,13 +1,13 @@
 --- php-5.2.0/scripts/php-config.in    2006-12-14 01:11:33.348180526 +0200
 +++ php-5.2.4/scripts/php-config.in    2007-08-31 19:43:04.061307670 +0300
 @@ -2,6 +2,7 @@
+ SED="@SED@"
  prefix="@prefix@"
exec_prefix="@exec_prefix@"
datarootdir="@datarootdir@"
 +sysconfdir='@sysconfdir@'
+ exec_prefix="@exec_prefix@"
  version="@PHP_VERSION@"
- version_id="@PHP_VERSION_ID@"
- includedir="@includedir@/php"
+ vernum="@PHP_VERSION_ID@"
 @@ -53,6 +54,8 @@
    echo $extension_dir;;
  --include-dir)
@@ -23,5 +23,5 @@
    --extension-dir     [$extension_dir]
 +  --sysconfdir        [$sysconfdir]
    --include-dir       [$include_dir]
+   --man-dir           [$man_dir]
    --php-binary        [$php_binary]
-   --php-sapis         [$php_sapis]
index f6ba5be43a945d7e47f38a4202456daf42c95681..3b43a3fca9f7d123e2de66cd194022ae82aaf207 100644 (file)
@@ -1,7 +1,7 @@
 --- php-7.1.1/ext/dba/config.m4.orig   2017-01-17 21:44:40.000000000 +0100
 +++ php-7.1.1/ext/dba/config.m4        2017-01-27 22:08:45.385645468 +0100
 @@ -245,7 +245,7 @@
-         ],[
+         ]])],[
            AC_EGREP_CPP(yes,[
  #include "$THIS_INCLUDE"
 -#if DB_VERSION_MAJOR == $1 || ($1 == 4 && DB_VERSION_MAJOR == 5)
index 125e9dc427bdfc55ab4603c24935b2ad4170bc0c..1479ac72b4d0f5fd5379a65d1d7913ab4498a09c 100644 (file)
@@ -8,4 +8,4 @@
 +            LIBS=$old_LIBS
              lib_found=1
            ])
-         ])
+         ],[])
diff --git a/php-fcgi-error_log-no-newlines.patch b/php-fcgi-error_log-no-newlines.patch
deleted file mode 100644 (file)
index 83c4509..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
---- php-7.0/sapi/cgi/cgi_main.c~       2015-05-21 23:12:23.000000000 +0300
-+++ php-7.0/sapi/cgi/cgi_main.c        2015-05-21 23:13:24.947976867 +0300
-@@ -701,12 +701,8 @@
-               request = (fcgi_request*) SG(server_context);
-               if (request) {
-                       int ret, len = (int)strlen(message);
--                      char *buf = malloc(len+2);
--                      memcpy(buf, message, len);
--                      memcpy(buf + len, "\n", sizeof("\n"));
--                      ret = fcgi_write(request, FCGI_STDERR, buf, (int)(len + 1));
--                      free(buf);
-+                      ret = fcgi_write(request, FCGI_STDERR, message, len);
-                       if (ret < 0) {
-                               php_handle_aborted_connection();
-                       }
index 2540bc3cb044f71057a75ef2fe597bdcf21700a9..96c6496e02ae6176c527dd54a8bc72baa72de66a 100644 (file)
@@ -27,12 +27,12 @@ echo "end!<br>\n";
 +/* Socket we are listening on incoming connections */
 +static int fcgi_fd = 0;
 +
- /**
-  * Process group
-  */
+ #ifndef PHP_WIN32
+ /* Did parent received exit signals SIG_TERM/SIG_INT/SIG_QUIT */
+ static int exit_signal = 0;
 @@ -1221,6 +1224,21 @@
-       exit(0);
  }
+ #endif
  
 +/**
 + * Graceful shutdown. Close listening sockets.
@@ -50,16 +50,16 @@ echo "end!<br>\n";
 +
 +
  PHP_INI_BEGIN()
-       STD_PHP_INI_ENTRY("cgi.rfc2616_headers",     "0",  PHP_INI_ALL,    OnUpdateBool,   rfc2616_headers, php_cgi_globals_struct, php_cgi_globals)
-       STD_PHP_INI_ENTRY("cgi.nph",                 "0",  PHP_INI_ALL,    OnUpdateBool,   nph, php_cgi_globals_struct, php_cgi_globals)
+       STD_PHP_INI_BOOLEAN("cgi.rfc2616_headers",     "0",  PHP_INI_ALL,    OnUpdateBool,   rfc2616_headers, php_cgi_globals_struct, php_cgi_globals)
+       STD_PHP_INI_BOOLEAN("cgi.nph",                 "0",  PHP_INI_ALL,    OnUpdateBool,   nph, php_cgi_globals_struct, php_cgi_globals)
 @@ -1764,7 +1764,6 @@
        int requests = 0;
        int fastcgi;
        char *bindpath = NULL;
 -      int fcgi_fd = 0;
        fcgi_request *request = NULL;
+       int warmup_repeats = 0;
        int repeats = 1;
-       int benchmark = 0;
 @@ -2080,9 +2080,14 @@
                                                parent = 0;
  
index c0205582c114c7c50c00a9970787cee12020e179..11b9933f6a1c64a7c0badea7904723838f35c91f 100644 (file)
 --- php-5.6.5/sapi/fpm/www.conf.in~    2015-02-04 19:26:16.000000000 +0200
 +++ php-5.6.5/sapi/fpm/www.conf.in     2015-02-04 19:27:25.275218535 +0200
 @@ -32,7 +32,7 @@
- ;                            specific port;
+ ;                            (IPv6 and IPv4-mapped) on a specific port;
  ;   '/path/to/unix/socket' - to listen on a unix socket.
  ; Note: This value is mandatory.
 -listen = 127.0.0.1:9000
 +listen = /var/run/php/@processname@.sock
  
  ; Set listen(2) backlog.
- ; Default Value: 65535 (-1 on FreeBSD and OpenBSD)
+ ; Default Value: 511 (-1 on FreeBSD and OpenBSD)
 @@ -46,9 +46,9 @@
- ; BSD-derived systems allow connections regardless of permissions. 
+ ; and group can be specified either by name or by their numeric IDs.
  ; Default Values: user and group are set as the running user
  ;                 mode is set to 0660
 -;listen.owner = @php_fpm_user@
@@ -83,5 +83,5 @@
 +              $(INSTALL_DATA) sapi/fpm/php-fpm.conf $(INSTALL_ROOT)$(sysconfdir)/php-fpm.conf; \
 +              $(INSTALL_DATA) sapi/fpm/www.conf $(INSTALL_ROOT)$(sysconfdir)/fpm.d/www.conf; \
        fi
-       
        @echo "Installing PHP FPM man page:      $(INSTALL_ROOT)$(mandir)/man8/"
index fb73edd40973bda65f7d030051412ffab49bb411..edd3e4f6ba4051032a19f79ca43975e07dc3035c 100644 (file)
@@ -1,7 +1,7 @@
 --- php-7.3.0beta3/build/php.m4~       2018-08-28 13:26:36.000000000 +0300
 +++ php-7.3.0beta3/build/php.m4        2018-09-05 18:56:49.744106256 +0300
 @@ -1829,18 +1829,18 @@
- dnl Wrapper for AC_CHECK_LIB
+ dnl Wrapper for AC_CHECK_LIB.
  dnl
  AC_DEFUN([PHP_CHECK_LIBRARY], [
 -  save_old_LDFLAGS=$LDFLAGS
diff --git a/php-mysql-ssl-context.patch b/php-mysql-ssl-context.patch
new file mode 100644 (file)
index 0000000..c8ff48d
--- /dev/null
@@ -0,0 +1,36 @@
+; obey default context options
+; https://bugs.php.net/bug.php?id=68344
+diff -urbB php-5.6.12/ext/mysqlnd/mysqlnd_net.c php-5.6.12/ext/mysqlnd/mysqlnd_net.c
+--- php-5.6.12/ext/mysqlnd/mysqlnd_net.c       2015-08-06 09:55:57.000000000 +0200
++++ php-5.6.12/ext/mysqlnd/mysqlnd_net.c       2015-08-10 13:25:30.187912101 +0200
+@@ -29,6 +29,7 @@
+ #include "mysqlnd_ext_plugin.h"
+ #include "php_network.h"
+ #include "zend_ini.h"
++#include "ext/standard/file.h"
+ #ifdef MYSQLND_COMPRESSION_ENABLED
+ #include <zlib.h>
+ #endif
+@@ -868,6 +868,21 @@ MYSQLND_METHOD(mysqlnd_net, enable_ssl)(
+               DBG_RETURN(FAIL);
+       }
++      if (FG(default_context)) {
++              zval **tmpzval = NULL;
++              int i = 0;
++              /* copy values from default stream settings */
++              char *opts[] = { "allow_self_signed", "cafile", "capath", "ciphers", "CN_match",
++                      "disable_compression", "local_cert", "local_pk", "no_ticket", "passphrase",
++                      "peer_fingerprint", "peer_name", "SNI_enabled", "SNI_server_certs", "SNI_server_name",
++                      "verify_depth", "verify_peer", "verify_peer_name", NULL };
++              while (opts[i]) {
++                      if (php_stream_context_get_option(FG(default_context), "ssl", opts[i], &tmpzval) == SUCCESS)
++                              php_stream_context_set_option(context, "ssl", opts[i], *tmpzval);
++                      i++;
++              }
++      }
++
+       if (net->data->options.ssl_key) {
+               zval key_zval;
+               ZVAL_STRING(&key_zval, net->data->options.ssl_key, 0);
+
diff --git a/php-oracle-instantclient.patch b/php-oracle-instantclient.patch
new file mode 100644 (file)
index 0000000..79c08c6
--- /dev/null
@@ -0,0 +1,39 @@
+checking Oracle Instant Client SDK header directory... configure: error: Oracle Instant Client SDK header files not found
+
+--- php-5.3.3/ext/oci8/config.m4.orig  2010-06-25 23:18:09.000000000 +0200
++++ php-5.3.3/ext/oci8/config.m4       2010-09-10 19:37:23.484315002 +0200
+@@ -304,6 +304,9 @@
+     AC_MSG_CHECKING([Oracle Instant Client SDK header directory])
++    dnl Header directory for Instant Client SDK PLD RPM install
++    OCISDKPLDINC=$PHP_OCI8_INSTANT_CLIENT/../include/oracle/client
++
+     dnl Header directory for Instant Client SDK RPM install
+     OCISDKRPMINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | $PHP_OCI8_SED -e 's!^/usr/lib/oracle/\(.*\)/client\('${PHP_OCI8_IC_LIBDIR_SUFFIX}'\)*/lib[/]*$!/usr/include/oracle/\1/client\2!'`
+@@ -313,7 +316,11 @@
+     dnl Header directory for manual installation
+     OCISDKMANINC=`echo "$PHP_OCI8_INSTANT_CLIENT" | $PHP_OCI8_SED -e 's!\(.*\)/lib[/]*$!\1/include!'`
+-    if test -f "$OCISDKRPMINC/oci.h"; then
++    if test -f "$OCISDKPLDINC/oci.h"; then
++      AC_MSG_RESULT($OCISDKPLDINC)
++      PHP_ADD_INCLUDE($OCISDKPLDINC)
++      OCI8INCDIR=$OCISDKPLDINC
++    elif test -f "$OCISDKRPMINC/oci.h"; then
+       AC_MSG_RESULT($OCISDKRPMINC)
+       PHP_ADD_INCLUDE($OCISDKRPMINC)
+       OCI8INCDIR=$OCISDKRPMINC
+--- php-7.2.0RC1/ext/pdo_oci/config.m4~        2017-09-11 14:32:13.000000000 +0300
++++ php-7.2.0RC1/ext/pdo_oci/config.m4 2017-09-11 14:45:25.019346828 +0300
+@@ -113,6 +113,9 @@
+     elif test -f "$OCISDKZIPINC/oci.h" ; then
+       PHP_ADD_INCLUDE($OCISDKZIPINC)
+       AC_MSG_RESULT($OCISDKZIPINC)
++    elif test -f $PDO_OCI_LIB_DIR/../include/oracle/client/oci.h ; then
++      PHP_ADD_INCLUDE($PDO_OCI_LIB_DIR/../include/oracle/client)
++      AC_MSG_RESULT($PDO_OCI_LIB_DIR/../include/oracle/client)
+     else
+       AC_MSG_ERROR([I'm too dumb to figure out where the include dir is in your Instant Client install])
+     fi
index 92129ee0d25f1e364620956890bf4a2c534d181e..ec44dfd2e3439607c266a3b66646e1566690fe9b 100644 (file)
@@ -13,8 +13,8 @@
 --- php-8.0.0beta4/build/Makefile.global~      2020-09-28 07:54:00.000000000 +0300
 +++ php-8.0.0beta4/build/Makefile.global       2020-09-28 07:54:42.203157017 +0300
 @@ -13,8 +13,12 @@
-       
- build-modules: $(PHP_MODULES)
+ build-binaries: $(PHP_BINARIES)
  
 -libphp.la: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
 -      $(LIBTOOL) --mode=link $(CC) $(LIBPHP_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@
@@ -26,7 +26,7 @@
 +      $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -rpath $(phptempdir) $(EXTRA_LDFLAGS) $(LDFLAGS) $(PHP_RPATHS) $(phptempdir)/libphp_common.la $(PHP_SAPI_OBJS) $(EXTRA_LIBS) $(ZEND_EXTRA_LIBS) -o $@
        -@$(LIBTOOL) --silent --mode=install cp $@ $(phptempdir)/$@ >/dev/null 2>&1
  
- libs/libphp$(PHP_MAJOR_VERSION).bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
+ libs/libphp.bundle: $(PHP_GLOBAL_OBJS) $(PHP_SAPI_OBJS)
 @@ -31,10 +31,10 @@
  install-sapi: $(OVERALL_TARGET)
        @echo "Installing PHP SAPI module:       $(PHP_SAPI)"
index ab1d8e05c44059593770ec72e138f41136098360..e8ae17b2abcb322a41f5f6fa98b21537778167f4 100644 (file)
@@ -1,7 +1,7 @@
 --- php-5.4.0alpha2/build/php.m4       2011-08-07 21:13:21.581133944 +0300
 +++ php-5.4.0alpha2/build/php.m4       2011-08-07 21:10:21.766717150 +0300
 @@ -2607,7 +2609,14 @@
- dnl version for apache1/2.
+ dnl This macro is used to get a comparable version for Apache.
  dnl
  AC_DEFUN([PHP_AP_EXTRACT_VERSION],[
 -  ac_output=`$1 -v 2>&1 | grep version | $SED -e 's/Oracle-HTTP-//'`
index 4bf7be9e18ae94926f1eb088599a315986683e53..5b0d84b7d9f31d31a603a2060c53dbef07d78305 100644 (file)
@@ -5,6 +5,7 @@ Add support for use of the system timezone database, rather
 than embedding a copy.  Discussed upstream but was not desired.
 
 History:
+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)
@@ -30,9 +31,9 @@ r3: fix a crash if /usr/share/zoneinfo doesn't exist (Raphael Geissert)
 r2: add filesystem trawl to set up name alias index
 r1: initial revision
 
-diff -up php-8.0.0beta3/ext/date/config0.m4.systzdata php-8.0.0beta3/ext/date/config0.m4
---- php-8.0.0beta3/ext/date/config0.m4.systzdata       2020-09-01 19:13:26.000000000 +0200
-+++ php-8.0.0beta3/ext/date/config0.m4 2020-09-02 08:07:51.039979873 +0200
+diff -up ./ext/date/config0.m4.systzdata ./ext/date/config0.m4
+--- ./ext/date/config0.m4.systzdata    2021-08-10 11:35:28.000000000 +0200
++++ ./ext/date/config0.m4      2021-08-10 12:09:41.067003517 +0200
 @@ -4,6 +4,19 @@ AC_CHECK_HEADERS([io.h])
  dnl Check for strtoll, atoll
  AC_CHECK_FUNCS(strtoll atoll)
@@ -53,9 +54,9 @@ diff -up php-8.0.0beta3/ext/date/config0.m4.systzdata php-8.0.0beta3/ext/date/co
  PHP_DATE_CFLAGS="-I@ext_builddir@/lib -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -DHAVE_TIMELIB_CONFIG_H=1"
  timelib_sources="lib/astro.c lib/dow.c lib/parse_date.c lib/parse_tz.c
                   lib/timelib.c lib/tm2unixtime.c lib/unixtime2tm.c lib/parse_iso_intervals.c lib/interval.c"
-diff -up php-8.0.0beta3/ext/date/lib/parse_tz.c.systzdata php-8.0.0beta3/ext/date/lib/parse_tz.c
---- php-8.0.0beta3/ext/date/lib/parse_tz.c.systzdata   2020-09-01 19:13:26.000000000 +0200
-+++ php-8.0.0beta3/ext/date/lib/parse_tz.c     2020-09-02 08:07:51.039979873 +0200
+diff -up ./ext/date/lib/parse_tz.c.systzdata ./ext/date/lib/parse_tz.c
+--- ./ext/date/lib/parse_tz.c.systzdata        2021-08-10 11:35:28.000000000 +0200
++++ ./ext/date/lib/parse_tz.c  2021-08-10 12:12:13.191605207 +0200
 @@ -26,8 +26,21 @@
  #include "timelib.h"
  #include "timelib_private.h"
@@ -90,7 +91,7 @@ diff -up php-8.0.0beta3/ext/date/lib/parse_tz.c.systzdata php-8.0.0beta3/ext/dat
        /* read ID */
        version = (*tzf)[3] - '0';
        *tzf += 4;
-@@ -418,7 +436,429 @@ void timelib_dump_tzinfo(timelib_tzinfo
+@@ -435,7 +453,429 @@ void timelib_dump_tzinfo(timelib_tzinfo
        }
  }
  
@@ -521,7 +522,7 @@ diff -up php-8.0.0beta3/ext/date/lib/parse_tz.c.systzdata php-8.0.0beta3/ext/dat
  {
        int left = 0, right = tzdb->index_size - 1;
  
-@@ -444,9 +884,48 @@ static int seek_to_tz_position(const uns
+@@ -461,9 +901,48 @@ static int seek_to_tz_position(const uns
        return 0;
  }
  
@@ -570,7 +571,7 @@ diff -up php-8.0.0beta3/ext/date/lib/parse_tz.c.systzdata php-8.0.0beta3/ext/dat
  }
  
  const timelib_tzdb_index_entry *timelib_timezone_identifiers_list(const timelib_tzdb *tzdb, int *count)
-@@ -458,7 +937,30 @@ const timelib_tzdb_index_entry *timelib_
+@@ -475,7 +954,30 @@ const timelib_tzdb_index_entry *timelib_
  int timelib_timezone_id_is_valid(const char *timezone, const timelib_tzdb *tzdb)
  {
        const unsigned char *tzf;
@@ -602,7 +603,25 @@ diff -up php-8.0.0beta3/ext/date/lib/parse_tz.c.systzdata php-8.0.0beta3/ext/dat
  }
  
  static int skip_64bit_preamble(const unsigned char **tzf, timelib_tzinfo *tz)
-@@ -540,11 +1044,36 @@ timelib_tzinfo *timelib_parse_tzfile(con
+@@ -517,6 +1019,8 @@ static timelib_tzinfo* timelib_tzinfo_ct
+ timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *tzdb, int *error_code)
+ {
+       const unsigned char *tzf;
++      char *memmap = NULL;
++      size_t maplen;
+       timelib_tzinfo *tmp;
+       int version;
+       int transitions_result, types_result;
+@@ -524,7 +1028,7 @@ timelib_tzinfo *timelib_parse_tzfile(con
+       *error_code = TIMELIB_ERROR_NO_ERROR;
+-      if (seek_to_tz_position(&tzf, timezone, tzdb)) {
++      if (seek_to_tz_position(&tzf, timezone, &memmap, &maplen, tzdb)) {
+               tmp = timelib_tzinfo_ctor(timezone);
+               version = read_preamble(&tzf, tmp, &type);
+@@ -563,11 +1067,36 @@ timelib_tzinfo *timelib_parse_tzfile(con
                }
                skip_posix_string(&tzf, tmp);
  
@@ -639,23 +658,3 @@ diff -up php-8.0.0beta3/ext/date/lib/parse_tz.c.systzdata php-8.0.0beta3/ext/dat
        } else {
                *error_code = TIMELIB_ERROR_NO_SUCH_TIMEZONE;
                tmp = NULL;
---- php-8.0.10/ext/date/lib/parse_tz.c.orig    2021-08-27 14:25:14.033549324 +0200
-+++ php-8.0.10/ext/date/lib/parse_tz.c 2021-08-27 14:24:27.173547016 +0200
-@@ -1019,6 +1019,8 @@
- timelib_tzinfo *timelib_parse_tzfile(const char *timezone, const timelib_tzdb *tzdb, int *error_code)
- {
-       const unsigned char *tzf;
-+      char *memmap = NULL;
-+      size_t maplen;
-       timelib_tzinfo *tmp;
-       int version;
-       int transitions_result, types_result;
-@@ -1026,7 +1028,7 @@
-       *error_code = TIMELIB_ERROR_NO_ERROR;
--      if (seek_to_tz_position(&tzf, timezone, tzdb)) {
-+      if (seek_to_tz_position(&tzf, timezone, &memmap, &maplen, tzdb)) {
-               tmp = timelib_tzinfo_ctor(timezone);
-               version = read_preamble(&tzf, tmp, &type);
index a72a4fab943f49224a5bd5825bd5c75012a2a7c2..9f09b2db1deb90bb67cc6c6be5487f186e0d63b9 100644 (file)
@@ -20,7 +20,7 @@ see also http://bugs.php.net/bug.php?id=29611
 -#if HAVE_ZLIB && !defined(COMPILE_DL_ZLIB)
 +#if HAVE_ZLIB
        REGISTER_LONG_CONSTANT("IMAGETYPE_SWC",     IMAGE_FILETYPE_SWC,     CONST_CS | CONST_PERSISTENT);
- #endif        
+ #endif
        REGISTER_LONG_CONSTANT("IMAGETYPE_IFF",     IMAGE_FILETYPE_IFF,     CONST_CS | CONST_PERSISTENT);
 @@ -186,7 +186,7 @@
  }
index 26fe840c8d4b45d138d817a08979f3fd0467a14d..ff5df85d9a088091748b9f7a9f5be9936f40626d 100644 (file)
--- a/php.spec
+++ b/php.spec
@@ -15,7 +15,7 @@
 %bcond_without phpdbg          # disable phpdbg SAPI
 # - Extensions
 %bcond_without bcmath          # without bcmath extension module
-%bcond_without bz2             # without bz2 extension module
+%bcond_without bzip2           # without bz2 extension module
 %bcond_without calendar        # without calendar extension module
 %bcond_without ctype           # without ctype extension module
 %bcond_without curl            # without CURL extension module
@@ -31,7 +31,7 @@
 %bcond_without gettext         # without gettext extension module
 %bcond_without gmp             # without gmp extension module
 %bcond_without iconv           # without iconv extension module
-%bcond_without imap            # without IMAP extension module
+%bcond_with    imap            # without IMAP extension module
 %bcond_without intl            # without Intl extension module
 %bcond_without ldap            # without LDAP extension module
 %bcond_without mbstring        # without mbstring extension module
@@ -48,7 +48,7 @@
 %bcond_without pdo_dblib       # without PDO dblib extension module
 %bcond_without pdo_firebird    # without PDO Firebird extension module
 %bcond_without pdo_mysql       # without PDO MySQL extension module
-%bcond_without pdo_oci         # without PDO oci extension module
+%bcond_without pdo_oci # without PDO oci extension module
 %bcond_without pdo_odbc        # without PDO ODBC extension module
 %bcond_without pdo_pgsql       # without PDO pgsql extension module
 %bcond_without pdo_sqlite      # without PDO SQLite extension module
@@ -63,8 +63,8 @@
 %bcond_without sqlite2         # without SQLite extension module
 %bcond_without sqlite3         # without SQLite3 extension module
 %bcond_without tidy            # without Tidy extension module
-%bcond_without xsl             # without xsl extension module
-%bcond_without zip             # without zip extension module
+%bcond_without xsl                     # without xsl extension module
+%bcond_without zip                     # without zip extension module
 # extensions options
 %bcond_without argon2          # argon2 password hashing
 %bcond_without instantclient   # build Oracle oci8 extension module against oracle-instantclient package
@@ -120,8 +120,8 @@ Summary:    PHP: Hypertext Preprocessor
 Summary(fr.UTF-8):     Le langage de script embarque-HTML PHP
 Summary(pl.UTF-8):     Język skryptowy PHP
 Summary(pt_BR.UTF-8):  A linguagem de script PHP
-Summary(ru.UTF-8):     PHP Версии 7 - язык препроцессирования HTML-файлов, выполняемый на сервере
-Summary(uk.UTF-8):     PHP Версії 7 - мова препроцесування HTML-файлів, виконувана на сервері
+Summary(ru.UTF-8):     PHP - язык препроцессирования HTML-файлов, выполняемый на сервере
+Summary(uk.UTF-8):     PHP - мова препроцесування HTML-файлів, виконувана на сервері
 Name:          %{orgname}%{php_suffix}
 Version:       8.0.17
 Release:       1
@@ -131,7 +131,7 @@ Epoch:              4
 # TSRM is licensed under BSD
 License:       PHP 3.01 and Zend and BSD
 Group:         Libraries
-Source0:       http://php.net/distributions/%{orgname}-%{version}.tar.xz
+Source0:       https://php.net/distributions/%{orgname}-%{version}.tar.xz
 # Source0-md5: fa88b5f436ad81235b0856144abb0035
 Source1:       opcache.ini
 Source2:       %{orgname}-mod_php.conf
@@ -160,7 +160,6 @@ Patch24:    %{orgname}-zlib-for-getimagesize.patch
 Patch25:       %{orgname}-stupidapache_version.patch
 Patch27:       %{orgname}-config-dir.patch
 Patch29:       %{orgname}-fcgi-graceful.patch
-Patch31:       %{orgname}-fcgi-error_log-no-newlines.patch
 Patch39:       %{orgname}-use-prog_sendmail.patch
 Patch41:       %{orgname}-fpm-config.patch
 Patch43:       %{orgname}-silent-session-cleanup.patch
@@ -168,12 +167,15 @@ Patch44:  %{orgname}-include_path.patch
 Patch50:       extension-shared-optional-dep.patch
 Patch53:       fix-test-run.patch
 Patch59:       %{orgname}-systzdata.patch
+Patch60:       %{orgname}-oracle-instantclient.patch
 Patch66:       php-db.patch
 Patch67:       mysql-lib-ver-mismatch.patch
-Patch69:       fpm-conf-split.patch
+# https://bugs.php.net/bug.php?id=68344
+Patch68:       php-mysql-ssl-context.patch
 Patch71:       libdb-info.patch
+Patch72:       openssl.patch
 URL:           http://php.net/
-%{?with_firebird:%{!?with_interbase_inst:BuildRequires:        Firebird-devel >= 1.0.2.908-2}}
+%{?with_pdo_firebird:%{!?with_interbase_inst:BuildRequires:    Firebird-devel >= 1.0.2.908-2}}
 %{?with_pspell:BuildRequires:  aspell-devel >= 2:0.50.0}
 BuildRequires: autoconf >= 2.59
 BuildRequires: automake >= 1.4d
@@ -184,10 +186,6 @@ BuildRequires:     cyrus-sasl-devel >= 2
 BuildRequires: db-devel >= 4.0
 BuildRequires: elfutils-devel
 %{?with_enchant:BuildRequires: enchant-devel >= 1.1.3}
-%{?with_kerberos5:BuildRequires:       heimdal-devel}
-%{?with_argon2:BuildRequires:  libargon2-devel >= 20161029}
-%{?with_ffi:BuildRequires:     libffi-devel}
-%{?with_sodium:BuildRequires:  libsodium-devel >= 1.0.8}
 %if %{with pdo_dblib}
 BuildRequires: freetds-devel >= 0.82
 %endif
@@ -197,13 +195,17 @@ BuildRequires:    gd-devel >= 2.1
 %endif
 BuildRequires: gdbm-devel
 BuildRequires: gmp-devel >= 4.2
+%{?with_kerberos5:BuildRequires:       heimdal-devel}
 %{?with_imap:BuildRequires:    imap-devel >= 1:2007e-2}
 %{?with_gcov:BuildRequires:    lcov}
 %{?with_fpm:BuildRequires:     libapparmor-devel}
+%{?with_argon2:BuildRequires:  libargon2-devel >= 20161029}
+%{?with_ffi:BuildRequires:     libffi-devel}
 %{?with_intl:BuildRequires:    libicu-devel >= 50.1}
 BuildRequires: libjpeg-devel
 BuildRequires: libltdl-devel >= 1.4
 BuildRequires: libpng-devel >= 1.0.8
+%{?with_sodium:BuildRequires:  libsodium-devel >= 1.0.8}
 %{?with_intl:BuildRequires:    libstdc++-devel}
 BuildRequires: libtool >= 2:2.4.6
 %{?with_webp:BuildRequires:    libwebp-devel}
@@ -215,7 +217,7 @@ BuildRequires:      libxml2-devel >= 1:2.7.6-4
 %{!?with_mysqli:BuildRequires: mysql-devel >= 4.1.13}
 %{!?with_pdo_mysql:BuildRequires:      mysql-devel}
 %{?with_snmp:BuildRequires:    net-snmp-devel >= 5.3}
-BuildRequires: oniguruma-devel
+BuildRequires: oniguruma-devel
 %{?with_ldap:BuildRequires:    openldap-devel >= 2.3.0}
 %if %{with openssl} || %{with ldap}
 BuildRequires: openssl-devel >= 1.0.1
@@ -249,7 +251,7 @@ BuildRoot:  %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
 
 %define                php_sysconfdir          /etc/%{name}
 %define                php_extensiondir        %{_libdir}/php/%{name}
-%define                php_datadir             /usr/share/php/%{name}
+%define                php_data_dir            /usr/share/php/%{name}
 %define                _sysconfdir             %{php_sysconfdir}
 
 # must be in sync with source. extra check ensuring that it is so is done in %%build
@@ -779,7 +781,8 @@ support in image files.
 Moduł PHP dodający obsługę znaczników EXIF w plikach obrazków.
 
 %package ffi
-Summary:       %{modname} - Foreign Function Interface
+Summary:       Foreign Function Interface module for PHP
+Summary(pl.UTF-8):     Moduł Foreign Function Interface (interfejsu do obcych języków) dla PHP
 Group:         Libraries
 URL:           https://www.php.net/manual/en/book.ffi.php
 Requires:      %{name}-common = %{epoch}:%{version}-%{release}
@@ -789,6 +792,10 @@ Provides:  php(ffi) = %{version}
 FFI is a multi-platform extension for PHP that allows you to bind to
 functions from arbitrary shared libraries and call them.
 
+%description ffi -l pl.UTF-8
+FFI to wieloplatformowe rozszerzenie dla PHP pozwalające dowiązywać
+funkcje z dowolnych bibliotek współdzielonych i wywoływać je.
+
 %package fileinfo
 Summary:       libmagic bindings
 Summary(pl.UTF-8):     Wiązania do libmagic
@@ -1523,6 +1530,7 @@ Moduł PHP dodający obsługę gniazdek.
 
 %package sodium
 Summary:       Wrapper for the Sodium cryptographic library
+Summary(pl.UTF-8):     Interfejs do biblioteki kryptograficznej Sodium
 Group:         Libraries
 URL:           https://paragonie.com/book/pecl-libsodium
 Requires:      %{name}-common = %{epoch}:%{version}-%{release}
@@ -1531,6 +1539,9 @@ Provides: php(sodium) = %{sodiumver}
 %description sodium
 A simple, low-level PHP extension for libsodium.
 
+%description sodium -l pl.UTF-8
+Proste, niskopoziomowe rozszerzenie PHP wykorzystując libsodium.
+
 %package sqlite3
 Summary:       SQLite3 extension module for PHP
 Summary(pl.UTF-8):     Moduł SQLite3 dla PHP
@@ -1614,6 +1625,7 @@ Summary(pl.UTF-8):        Zawiera pliki testów jednostkowych dla PHP i rozszerzeń
 Group:         Libraries
 URL:           http://qa.php.net/
 Requires:      %{name}-cli
+BuildArch:     noarch
 
 %description tests
 This package contains unit tests for PHP and its extensions.
@@ -1769,11 +1781,14 @@ compression support to PHP.
 Moduł PHP umożliwiający używanie kompresji zlib.
 
 %prep
-%setup -q -n %{orgname}-%{version}
+%setup -q -n %{orgname}-%{version}%{?subver}
+
 cp -p php.ini-production php.ini
 %patch0 -p1
 %patch1 -p1
 %patch3 -p1
+%patch4 -p1
+
 %patch7 -p1
 %patch9 -p1
 %patch10 -p1
@@ -1786,20 +1801,25 @@ cp -p php.ini-production php.ini
 %patch25 -p1
 %patch27 -p1
 %patch29 -p1
-%patch31 -p1
 %patch39 -p1
-%if %{with fpm}
 %patch41 -p1
-%endif
 %patch43 -p1
 %patch44 -p1
 %patch50 -p1
 %patch53 -p1
-%undos ext/spl/tests/SplFileInfo_getInode_basic.phpt
-%patch59 -p1 -b .systzdata
+%patch59 -p1
+%if %{with instantclient}
+%patch60 -p1
+%endif
 %patch66 -p1
 %patch67 -p1
+#%patch68 -p1 DROP or update to 7.0 APIs
 %patch71 -p1
+%patch72 -p1
+
+sed -E -i -e '1s,#!\s*/usr/bin/env\s+(.*),#!%{__bindir}\1,' \
+      ext/ext_skel.php \
+      run-tests.php
 
 # cleanup backups after patching
 find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
@@ -1808,6 +1828,17 @@ find '(' -name '*~' -o -name '*.orig' ')' -print0 | xargs -0 -r -l512 rm -f
 %{__rm} -r ext/com_dotnet
 
 # remove all bundled libraries not to link with them accidentally
+#%{__rm} -r ext/bcmath/libbcmath
+#%{__rm} -r ext/date/lib
+#%{__rm} -r ext/fileinfo/libmagic
+#%{__rm} -r ext/dba/libcdb
+#%{__rm} -r ext/dba/libflatfile
+#%{__rm} -r ext/dba/libinifile
+#%{__rm} -r ext/gd/libgd
+#%{__rm} -r ext/mbstring/libmbfl
+#%{__rm} -r ext/pcre/pcre2lib
+#%{__rm} -r ext/soap/interop
+#%{__rm} -r ext/zip/lib
 %{__rm} ext/date/lib/timezonedb.h
 
 cp -pf Zend/LICENSE{,.Zend}
@@ -1884,6 +1915,11 @@ ix86=: x8664=: \
        sh -xe %{_sourcedir}/skip-tests.sh
 
 %build
+get_version() {
+       local define="$1" filename="$2"
+       awk -vdefine="$define" '/#define/ && $2 == define {print $3}' "$filename" | xargs
+}
+
 API=$(awk '/#define PHP_API_VERSION/{print $3}' main/php.h)
 if [ $API != %{php_api_version} ]; then
        echo "Set %%define php_api_version to $API and re-run."
@@ -1915,7 +1951,7 @@ if test "$ver" != "PHP_VERSION"; then
        : Update the fileinfover macro and rebuild.
        exit 1
 fi
-ver=$(awk '/#define PHP_PHAR_VERSION/ {print $3}' ext/phar/php_phar.h | xargs)
+ver=$(get_version PHP_PHAR_VERSION ext/phar/php_phar.h)
 if test "$ver" != "PHP_VERSION"; then
        : Error: Upstream PHAR version is now ${ver}, expecting %{pharver}.
        : Update the pharver macro and rebuild.
@@ -1937,19 +1973,19 @@ if test "$ver" != "%{zipver}"; then
        : Update the zipver macro and rebuild.
        exit 1
 fi
-ver=$(awk '/#define PHP_JSON_VERSION/ {print $3}' ext/json/php_json.h | xargs)
+ver=$(get_version PHP_JSON_VERSION ext/json/php_json.h)
 if test "$ver" != "PHP_VERSION"; then
        : Error: Upstream JSON version is now ${ver}, expecting %{jsonver}.
        : Update the jsonver macro and rebuild.
        exit 1
 fi
-ver=$(awk '/#define PHPDBG_VERSION/ {print $3}' sapi/phpdbg/phpdbg.h | xargs)
+ver=$(get_version PHPDBG_VERSION sapi/phpdbg/phpdbg.h)
 if test "$ver" != "PHP_VERSION"; then
        : Error: Upstream phpdbg version is now ${ver}, expecting %{phpdbgver}.
        : Update the phpdbgver macro and rebuild.
        exit 1
 fi
-ver=$(awk '/#define PHP_BZ2_VERSION/ {print $3}' ext/bz2/php_bz2.h | xargs)
+ver=$(get_version PHP_BZ2_VERSION ext/bz2/php_bz2.h)
 if test "$ver" != "PHP_VERSION"; then
        : Error: Upstream BZIP2 version is now ${ver}, expecting %{bz2ver}.
        : Update the bz2ver macro and rebuild.
@@ -1959,13 +1995,13 @@ ver=$(awk '/#define PHP_ENCHANT_VERSION/ {print $3}' ext/enchant/php_enchant.h |
 if test "$ver" != "PHP_VERSION"; then
        exit 1
 fi
-ver=$(awk '/#define PHP_HASH_VERSION/ {print $3}' ext/hash/php_hash.h | xargs)
+ver=$(get_version PHP_HASH_VERSION ext/hash/php_hash.h)
 if test "$ver" != "PHP_VERSION"; then
        : Error: Upstream HASH version is now ${ver}, expecting %{hashver}.
        : Update the hashver macro and rebuild.
        exit 1
 fi
-ver=$(awk '/#define PHP_INTL_VERSION/ {print $3}' ext/intl/php_intl.h | xargs)
+ver=$(get_version PHP_INTL_VERSION ext/intl/php_intl.h)
 if test "$ver" != "PHP_VERSION"; then
        : Error: Upstream Intl version is now ${ver}, expecting %{intlver}.
        : Update the intlver macro and rebuild.
@@ -2035,37 +2071,40 @@ for sapi in $sapis; do
        sapi_args=''
        case $sapi in
        cgi-fcgi)
-               sapi_args='--disable-cli'
+               sapi_args='--enable-cgi'
        ;;
        cli)
-               sapi_args='--disable-cgi %{?with_gcov:--enable-gcov}'
+               sapi_args='--enable-cli %{?with_gcov:--enable-gcov}'
        ;;
        fpm)
-               sapi_args='--disable-cli --disable-cgi --enable-fpm'
+               sapi_args='--enable-fpm'
                ;;
        embed)
-               sapi_args='--disable-cli --disable-cgi --enable-embed'
+               sapi_args='--enable-embed'
                ;;
        apxs2)
                ver=$(rpm -q --qf '%{V}' apache-devel)
-               sapi_args="--disable-cli --disable-cgi --with-apxs2=%{apxs2} --with-apache-version=$ver"
+               sapi_args="--with-apxs2=%{apxs2} --with-apache-version=$ver"
        ;;
        litespeed)
-               sapi_args='--disable-cli --disable-cgi --enable-litespeed'
+               sapi_args='--enable-litespeed'
        ;;
        phpdbg)
-               sapi_args='--disable-cli --disable-cgi --enable-phpdbg %{?debug:--enable-phpdbg-debug}'
+               sapi_args='--enable-phpdbg %{?debug:--enable-phpdbg-debug}'
        ;;
        esac
 
        %configure \
        EXTRA_LDFLAGS="%{rpmldflags}" \
        --program-suffix=%{php_suffix} \
+       --disable-cgi \
+       --disable-cli \
+       --disable-phpdbg \
        $sapi_args \
 %if "%{!?configure_cache:0}%{?configure_cache}" == "0"
        --cache-file=config.cache \
 %endif
-       --datadir=%{php_datadir} \
+       --datadir=%{php_data_dir} \
        --with-libdir=%{_lib} \
        --with-config-file-path=%{_sysconfdir} \
        --with-config-file-scan-dir=%{_sysconfdir}/conf.d \
@@ -2073,7 +2112,7 @@ for sapi in $sapis; do
        %{?with_argon2:--with-password-argon2} \
        --%{!?with_debug:dis}%{?with_debug:en}able-debug \
        %{?with_zts:--enable-maintainer-zts} \
-       --enable-inline-optimization \
+       --enable-option-checking=fatal \
        %{__enable_disable bcmath bcmath shared} \
        %{__enable_disable calendar calendar shared} \
        %{__enable_disable ctype ctype shared} \
@@ -2122,7 +2161,7 @@ for sapi in $sapis; do
        --enable-tokenizer=shared \
        --enable-xml=shared \
        --enable-xmlreader=shared \
-       %{__with_without bz2 bz2 shared} \
+       %{__with_without bzip2 bz2 shared} \
        %{__with_without curl curl shared} \
        --with-db4 \
        %{__with_without iconv iconv shared} \
@@ -2404,9 +2443,9 @@ install -d $RPM_BUILD_ROOT%{_includedir}/php/php%{php_suffix}/ext/mbstring
 cp -p ext/mbstring/libmbfl/mbfl/*.h $RPM_BUILD_ROOT%{_includedir}/php/php%{php_suffix}/ext/mbstring
 
 # tests
-install -d $RPM_BUILD_ROOT%{php_datadir}/tests/php
-install -p run-tests.php $RPM_BUILD_ROOT%{php_datadir}/tests/php/run-tests.php
-cp -a tests/* $RPM_BUILD_ROOT%{php_datadir}/tests/php
+install -d $RPM_BUILD_ROOT%{php_data_dir}/tests/php
+install -p run-tests.php $RPM_BUILD_ROOT%{php_data_dir}/tests/php/run-tests.php
+cp -a tests/* $RPM_BUILD_ROOT%{php_data_dir}/tests/php
 
 # fix install paths, avoid evil rpaths
 sed -i -e "s|^libdir=.*|libdir='%{_libdir}'|" $RPM_BUILD_ROOT%{_libdir}/libphp_common%{php_suffix}.la
@@ -2498,7 +2537,14 @@ fi
 # restart webserver at the end of transaction
 [ ! -f /etc/httpd/conf.d/??_mod_php.conf ] || %service -q httpd restart
 
-%triggerpostun common -- php-common < 4:5.3.28-7
+%triggerpostun common -- %{name}-common < 4:5.6.4-2, php-common < 4:5.6.4-2
+# switch to browscap package if the ini file has original value
+%{__sed} -i -e 's#%{_sysconfdir}/browscap.ini#/usr/share/browscap/php_browscap.ini#' %{_sysconfdir}/php.ini
+# disable browscap, if optional package not present
+if [ ! -e /usr/share/browscap/php_browscap.ini ]; then
+       %{__sed} -i -e 's#^browscap = /usr/share/browscap/php_browscap.ini#;&#' %{_sysconfdir}/php.ini
+fi
+
 # migrate configs /etc/php/conf.d -> /etc/phpXY/conf.d/
 # do config migration in php-common trigger, as the trigger is ran after all packages are upgraded
 # this way we can stick to one trigger, instead of attaching one for each (sub)package!
@@ -2519,14 +2565,6 @@ for f in /etc/php/*.ini.rpmsave /etc/php/*.d/*.ini.rpmsave; do
        ' $nf
 done
 
-%triggerpostun common -- %{name}-common < 4:5.6.4-2, php-common < 4:5.6.4-2
-# switch to browscap package if the ini file has original value
-%{__sed} -i -e 's#%{_sysconfdir}/browscap.ini#/usr/share/browscap/php_browscap.ini#' %{_sysconfdir}/php.ini
-# disable browscap, if optional package not present
-if [ ! -e /usr/share/browscap/php_browscap.ini ]; then
-       %{__sed} -i -e 's#^browscap = /usr/share/browscap/php_browscap.ini#;&#' %{_sysconfdir}/php.ini
-fi
-
 %triggerpostun -n apache-mod_%{name} -- apache-mod_%{name} < 4:7.0.0-2.RC4
 sed -i -e 's#modules/libphp[57].so#modules/mod_php.so#g' /etc/httpd/conf.d/*_mod_php.conf
 
@@ -2694,7 +2732,7 @@ fi
 %dir %{_sysconfdir}/conf.d
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/php.ini
 %attr(755,root,root) %{_libdir}/libphp_common%{php_suffix}-*.so
-%dir %{php_datadir}
+%dir %{php_data_dir}
 %dir %{php_extensiondir}
 
 %doc ext/session/mod_files.sh
@@ -2723,7 +2761,7 @@ fi
 %attr(755,root,root) %{php_extensiondir}/bcmath.so
 %endif
 
-%if %{with bz2}
+%if %{with bzip2}
 %files bz2
 %defattr(644,root,root,755)
 %doc ext/bz2/CREDITS
@@ -2899,7 +2937,7 @@ fi
 %attr(755,root,root) %{php_extensiondir}/mysqlnd.so
 %endif
 
-%if %{with oci}
+%if %{with pdo_oci}
 %files oci8
 %defattr(644,root,root,755)
 %doc ext/oci8/{CREDITS,README}
@@ -2971,7 +3009,7 @@ fi
 %attr(755,root,root) %{php_extensiondir}/pdo_mysql.so
 %endif
 
-%if %{with pdo_oci}
+%if %{with oci}
 %files pdo-oci
 %defattr(644,root,root,755)
 %doc ext/pdo_oci/CREDITS
@@ -3034,7 +3072,6 @@ fi
 %if %{with pspell}
 %files pspell
 %defattr(644,root,root,755)
-%doc ext/pspell/CREDITS
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/??_pspell.ini
 %attr(755,root,root) %{php_extensiondir}/pspell.so
 %endif
@@ -3124,18 +3161,18 @@ fi
 
 %files tests
 %defattr(644,root,root,755)
-%dir %{php_datadir}/tests
-%dir %{php_datadir}/tests/php
-%{php_datadir}/tests/php/basic
-%{php_datadir}/tests/php/classes
-%{php_datadir}/tests/php/func
-%{php_datadir}/tests/php/lang
-%{php_datadir}/tests/php/output
-%{php_datadir}/tests/php/run-test
-%{php_datadir}/tests/php/security
-%{php_datadir}/tests/php/strings
-%{php_datadir}/tests/php/quicktester.inc
-%attr(755,root,root) %{php_datadir}/tests/php/run-tests.php
+%dir %{php_data_dir}/tests
+%dir %{php_data_dir}/tests/php
+%{php_data_dir}/tests/php/basic
+%{php_data_dir}/tests/php/classes
+%{php_data_dir}/tests/php/func
+%{php_data_dir}/tests/php/lang
+%{php_data_dir}/tests/php/output
+%{php_data_dir}/tests/php/run-test
+%{php_data_dir}/tests/php/security
+%{php_data_dir}/tests/php/strings
+%{php_data_dir}/tests/php/quicktester.inc
+%attr(755,root,root) %{php_data_dir}/tests/php/run-tests.php
 
 %if %{with tidy}
 %files tidy
@@ -3180,7 +3217,8 @@ fi
 %if %{with zip}
 %files zip
 %defattr(644,root,root,755)
-%doc ext/zip/{CREDITS,examples}
+%doc ext/zip/CREDITS
+%doc ext/zip/examples
 %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/conf.d/??_zip.ini
 %attr(755,root,root) %{php_extensiondir}/zip.so
 %endif