1
0
mirror of https://github.com/php/php-src.git synced 2026-04-08 08:33:06 +02:00
Commit Graph

1312 Commits

Author SHA1 Message Date
George Peter Banyard
548e0615cd FPM: refactor fpm_php_get_string_from_table() to better match usage (#11051)
Pass the key length to improve the existence check for the key
2023-05-20 22:49:41 +01:00
Jakub Zelenka
e5d46b31a1 Merge branch 'PHP-8.2' 2023-05-19 16:31:00 +01:00
Jakub Zelenka
3769505c87 Merge branch 'PHP-8.1' into PHP-8.2 2023-05-19 16:30:36 +01:00
Jakub Zelenka
aa061cd40b Fix FPM status json encoded value test
Closes GH-11276
2023-05-19 16:20:21 +01:00
Ilija Tovilo
8d0345d94e Merge branch 'PHP-8.2'
* PHP-8.2:
  [skip ci] Mark frequently failing fpm test as XFAIL
2023-05-17 17:42:46 +02:00
Ilija Tovilo
69d41cc7fc Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  [skip ci] Mark frequently failing fpm test as XFAIL
2023-05-17 17:42:39 +02:00
Ilija Tovilo
e31fe111a5 [skip ci] Mark frequently failing fpm test as XFAIL
Reported here: https://github.com/php/php-src/pull/11050#issuecomment-1546990346
2023-05-17 17:42:05 +02:00
Jakub Zelenka
03f64b7853 Merge branch 'PHP-8.2' 2023-05-14 12:29:19 +01:00
Jakub Zelenka
1129046482 Merge branch 'PHP-8.1' into PHP-8.2 2023-05-14 12:28:52 +01:00
Jakub Zelenka
4294e8d448 FPM: Fix memory leak for invalid primary script file handle
Closes GH-11088
2023-05-14 12:27:38 +01:00
Jakub Zelenka
a225f6ab6b Merge branch 'PHP-8.2' 2023-05-13 18:54:16 +01:00
Jakub Zelenka
90553af15c Merge branch 'PHP-8.1' into PHP-8.2 2023-05-13 18:53:35 +01:00
Jakub Zelenka
5e64ead64a Fix bug #64539: FPM status - query_string not properly JSON encoded
Closes GH-11050
2023-05-13 18:43:30 +01:00
Jakub Zelenka
7034263f6e Merge branch 'PHP-8.2' 2023-05-13 14:15:17 +01:00
Jakub Zelenka
bda28eb649 Merge branch 'PHP-8.1' into PHP-8.2 2023-05-13 14:14:23 +01:00
Jakub Zelenka
102953735c Fix GH-10461: Postpone FPM child freeing in event loop
This is to prevent after free accessing of the child event that might
happen when child is killed and the message is delivered at that same
time.

Also fixes GH-10889 and properly fixes GH-8517 that was not previously
fixed correctly.
2023-05-13 14:11:42 +01:00
Calvin Buckley
3af5f47ce6 http_response_code should warn if headers were already sent
This would previously fail silently. We also return false to indicate the error.

Fixes GH-10742
Closes GH-10744
2023-05-05 15:24:56 +02:00
Michael Voříšek
f89fe830f2 Minor conditions simplify (#10397) 2023-04-26 15:12:01 +02:00
Sjon Hortensius
581e729e8d fpm: remove 2 unneeded newlines from zlog call 2023-04-16 11:39:00 +01:00
Jakub Zelenka
7de83e2736 Merge branch 'PHP-8.2' 2023-04-07 12:29:46 +01:00
Jakub Zelenka
0b4f2fc9e8 Merge branch 'PHP-8.1' into PHP-8.2 2023-04-07 12:29:23 +01:00
Jakub Zelenka
ebb3213f79 Add FPM FCGI env Apache handler UDS test 2023-04-07 12:28:42 +01:00
Jakub Zelenka
f17cf2ed63 Merge branch 'PHP-8.2' 2023-04-06 16:01:13 +01:00
Jakub Zelenka
1ca1858f31 Merge branch 'PHP-8.1' into PHP-8.2 2023-04-06 16:00:48 +01:00
Jakub Zelenka
15802dfc62 Add FPM FastCGI env var test for Apache without path info fix 2023-04-06 15:59:34 +01:00
Dmitry Stogov
c9d728cbd6 Revert "Zend/zend_types.h: move zend_rc_debug to zend_rc_debug.h"
This reverts commit d6e95041e2.
2023-04-04 22:48:26 +03:00
Ilija Tovilo
9d5f2f1343 Use new ZSTR_INIT_LITERAL macro (#10879) 2023-03-20 16:19:05 +01:00
Jakub Zelenka
5efd60ea90 Merge branch 'PHP-8.2' 2023-03-19 13:17:56 +00:00
Jakub Zelenka
2b0d29bf17 Merge branch 'PHP-8.1' into PHP-8.2 2023-03-19 13:17:09 +00:00
Jakub Zelenka
0d4d471847 Fix bug #74129: Incorrect SCRIPT_NAME with apache ProxyPassMatch
This happens when there are spaces are in the path info. The reason is
that Apache decodes the path info part in the SCRIPT_NAME as per CGI
RFC. FPM tries to strip path info from the SCRIPT_NAME but the
comparison is done against SCRIPT_FILENAME which is not decoded. For
that to work we have to decode it before comparison if there is any
encoded character.

Closes GH-10869
2023-03-19 13:11:14 +00:00
Niels Dossche
674bcca513 Merge branch 'PHP-8.2'
* PHP-8.2:
  Destroy file_handle in fpm_main
2023-03-18 21:05:44 +01:00
Niels Dossche
e44b1a916d Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Destroy file_handle in fpm_main
2023-03-18 21:00:21 +01:00
Niels Dossche
f30e71cbde Destroy file_handle in fpm_main
If it's not in the CG(open_files) list, we need to destroy the file
handle ourselves.

Co-authored-by: Jakub Zelenka <bukka@php.net>

Closes GH-10707.
2023-03-18 20:54:46 +01:00
Jakub Zelenka
31ccfbd6f6 Merge branch 'PHP-8.2' 2023-03-17 14:57:14 +00:00
Jakub Zelenka
4ac12006ae Merge branch 'PHP-8.1' into PHP-8.2 2023-03-17 14:56:45 +00:00
Jakub Zelenka
7d987ebbbf Fix FPM tester $scriptName logic 2023-03-17 14:55:51 +00:00
Jakub Zelenka
856925ccb4 Merge branch 'PHP-8.2' 2023-03-17 10:45:49 +00:00
Jakub Zelenka
e9bbddcdaf Merge branch 'PHP-8.1' into PHP-8.2 2023-03-17 10:45:14 +00:00
Jakub Zelenka
38d2e7ea9a Test FPM FCGI envs with path info fix for Apache proxy pass 2023-03-17 10:42:16 +00:00
Jakub Zelenka
8cf621e0e4 Test FPM FCGI envs with path info fix for Apache proxy handler 2023-03-17 10:42:16 +00:00
Jakub Zelenka
b53b0ac2ea Test FPM FCGI envs with path info fix for Apache proxy balancer 2023-03-17 10:42:15 +00:00
Jakub Zelenka
92d2cd5cb8 Test FPM FCGI envs without path info fix for custom source 2023-03-17 10:42:15 +00:00
Jakub Zelenka
3125155b5d Add extra option to FPM tester for handling script filename 2023-03-17 10:42:14 +00:00
Niels Dossche
e2ec59f0c4 Merge branch 'PHP-8.2'
* PHP-8.2:
  Fix GH-10611: fpm_env_init_main leaks environ
2023-03-11 16:39:23 +01:00
Niels Dossche
6a44705f4e Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix GH-10611: fpm_env_init_main leaks environ
2023-03-11 16:35:11 +01:00
Niels Dossche
71c63723c8 Fix GH-10611: fpm_env_init_main leaks environ
Closes GH-10618.
2023-03-11 16:34:41 +01:00
Niels Dossche
b39ff334a3 Merge branch 'PHP-8.2'
* PHP-8.2:
  Re-add some CTE functions that were removed from being CTE by a mistake
  Fix GH-8065: opcache.consistency_checks > 0 causes segfaults in PHP >= 8.1.5 in fpm context
  Fix GH-8646: Memory leak PHP FPM 8.1
2023-03-07 20:36:41 +01:00
Niels Dossche
7682868dd1 Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1:
  Fix GH-8065: opcache.consistency_checks > 0 causes segfaults in PHP >= 8.1.5 in fpm context
  Fix GH-8646: Memory leak PHP FPM 8.1
2023-03-07 20:26:57 +01:00
Niels Dossche
ff62d117a3 Fix GH-8646: Memory leak PHP FPM 8.1
Fixes GH-8646
See https://github.com/php/php-src/issues/8646 for thorough discussion.

Interned strings that hold class entries can get a corresponding slot in map_ptr for the CE cache.
map_ptr works like a bump allocator: there is a counter which increases to allocate the next slot in the map.

For class name strings in non-opcache we have:
  - on startup: permanent + interned
  - on request: interned
For class name strings in opcache we have:
  - on startup: permanent + interned
  - on request: either not interned at all, which we can ignore because they won't get a CE cache entry
                or they were already permanent + interned
                or we get a new permanent + interned string in the opcache persistence code

Notice that the map_ptr layout always has the permanent strings first, and the request strings after.
In non-opcache, a request string may get a slot in map_ptr, and that interned request string
gets destroyed at the end of the request. The corresponding map_ptr slot can thereafter never be used again.
This causes map_ptr to keep reallocating to larger and larger sizes.

We solve it as follows:
We can check whether we had any interned request strings, which only happens in non-opcache.
If we have any, we reset map_ptr to the last permanent string.
We can't lose any permanent strings because of map_ptr's layout.

Closes GH-10783.
2023-03-07 20:16:17 +01:00
Michael Orlitzky
fa65873502 */*.m4: update main() signatures.
The next generation of C compilers is going to enforce the C standard
more strictly:

  https://wiki.gentoo.org/wiki/Modern_C_porting

One warning that will soon become an error is -Wstrict-prototypes.
This is relatively easy to catch in most code (it will fail to
compile), but inside of autoconf tests it can go unnoticed because
many feature-test compilations fail by design. For example,

  $ export CFLAGS="$CFLAGS -Werror=strict-prototypes"
  $ ./configure
  ...
  checking if iconv supports errno... no
  configure: error: iconv does not support errno

(this is on a system where iconv *does* support errno). If errno
support were optional, that test would have "silently" disabled
it. The underlying issue here, from config.log, is

  conftest.c:211:5: error: function declaration isn't a prototype
  [-Werror=strict-prototypes]
    211 | int main() {

This commit goes through all of our autoconf tests, replacing main()
with main(void). Up to equivalent types and variable renamings, that's
one of the two valid signatures, and satisfies the compiler (gcc-12 in
this case).

Fixes GH-10751
2023-03-07 15:32:30 +00:00