summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_php_sapi.c (follow)
AgeCommit message (Collapse)AuthorFilesLines
2019-09-23PHP: zeroing the whole file_handle structure.Sergey Kandaurov1-2/+2
Fixes segfaults with PHP 7.4.
2019-07-16PHP: fixed script filename setting, broken after 2a71417d297f.Valentin Bartenev1-6/+8
2019-07-05PHP: added PATH_INFO support.Max Romanov1-74/+96
2019-07-05PHP: improved response status code handling.Valentin Bartenev1-12/+2
There's no reason to parse "http_status_line"; the PHP interpreter already does this. If the line contains a valid status code, it's assigned to "http_response_code". This also fixes invalid status line handling, where the nxt_int_parse() function returned -1; it was cast to unsigned, yielding response code 65535.
2019-06-28PHP: removing excessive debug message.Max Romanov1-2/+0
2019-03-21Adjusting request schema value according to connection tls state.Max Romanov1-0/+4
This closes #223 issue on GitHub.
2019-03-11Style.Andrey Zelenkov1-1/+1
2019-02-28Made QUERY_STRING mandatory.Valentin Bartenev1-4/+2
According to CGI/1.1 RFC 3875: The server MUST set this variable; if the Script-URI does not include a query component, the QUERY_STRING MUST be defined as an empty string (""). Python's PEP 333(3) allows omitting it in WSGI interface; PHP docs force no requirements; PSGI and Rack specifications require it even if empty. When nginx proxies requests over FastCGI, it always provides QUERY_STRING. and some PHP apps have been observed to fail if it is missing (see issue #201 on GitHub). A drawback of this change (besides a small overhead) is that there will be no easy way to tell a missing query string from an empty one (i.e. requests with or without the "?" character); yet, it's negligible compared to the possible benefits of wider application compatibility. This closes #226 issue on GitHub.
2019-02-28Introducing Java Servlet Container beta.Max Romanov1-0/+1
2019-02-27Fixed processing of SERVER_NAME after 77aad2c142a0.Valentin Bartenev1-24/+7
Previously, the nxt_router_prepare_msg() function expected server host among other headers unmodified. It's not true anymore since normalization of the Host header has been introduced in 77aad2c142a0. The nxt_unit_split_host() function was removed. It didn't work correctly with IPv6 literals. Anyway, after 77aad2c142a0 the port splitting is done in router while Host header processing.
2018-11-27PHP: fixed "disable_functions" and "disable_classes" options.Valentin Bartenev1-10/+87
It turned out they need additional processing to work. This closes #183 issue on GitHub.
2018-11-22PHP: workaround for bug #71041.Valentin Bartenev1-2/+6
Since PHP 7, a zend_signal_startup() call is required if the interpreter was built with ZEND_SIGNALS defined; such a call was added in 3fd76e4ce70a. However, the zend_signal_startup() export is missing from the PHP library; as the result, dlopen() fails with the 'Undefined symbol "zend_signal_startup"' error while loading the PHP module. Meanwhile, if PHP is built without ZTS, the zend_signal_startup() call can be omitted; otherwise, the missing call causes segmentation fault. The PHP fix already was committed to upstream, but we still have to deal with numerous unpatched versions remaining at large. See the related PHP bug: https://bugs.php.net/bug.php?id=71041
2018-11-21PHP: fixed compatibility with ZTS.Valentin Bartenev1-6/+25
This closes #184 issue on GitHub.
2018-08-06Unit application library.Max Romanov1-351/+305
Library now used in all language modules. Old 'nxt_app_*' code removed. See src/test/nxt_unit_app_test.c for usage sample.
2018-07-05PHP: fixed request body processing.Valentin Bartenev1-2/+37
The implementation of module was based on the assumption that PHP reads request body and headers in the particular order. For the POST request the body goes before headers and vice versa for all other requests. But as it appeared later, this order is unspecified and depends on many factors, including the particular code of PHP application. Among other factors those can affect ordering: - presence of "Content-Type" header; - "variables_order" php.ini setting; - "enable_post_data_reading" php.ini setting; - reading php://input by application; and this list can be incomplete. As a temporary workaround, request body now is always put before headers and it is gracefully skipped whenever PHP wants to get headers. This closes #144 issue on GitHub.
2018-07-03PHP: fixed setting of individual configuration options.Valentin Bartenev1-29/+87
The previous method changed PHP options only for the first request. On the request completion the options were rolled back. This closes #145 issue on GitHub.
2018-06-28Removed usage of nxt_thread_context in loadable modules.Igor Sysoev1-1/+6
This change allows to use __thread class storage on MacOSX.
2018-06-25Introduced nxt_length() macro.Valentin Bartenev1-6/+6
2018-06-07PHP: added setting of individual configuration options.Valentin Bartenev1-0/+68
2018-06-07PHP: added setting of php.ini configuration file path.Valentin Bartenev1-2/+24
2018-05-21Added SERVER_SOFTWARE request meta-variable.Valentin Bartenev1-0/+2
2018-04-05Style.Valentin Bartenev1-2/+2
2018-04-04Changed version processing for modules.Alexander Borisov1-1/+1
2018-03-16PHP: fixed segfault on initialization.Valentin Bartenev1-12/+9
PHP SAPI can call log handler while initializing. Particularly, that happens if there's a problem in loading some extension specified in php.ini file. On this stage server context is empty, so now nxt_thread_log_error() is used.
2018-03-05Reduced number of critical log levels.Valentin Bartenev1-6/+4
2018-01-12PHP: Terminating names with zero.Max Romanov1-4/+7
Fixing issue introduced in changeset 462:17a2c9b27b57 .
2018-01-12Initializing script_name.start before using.Max Romanov1-0/+1
This makes gcc 4.4.6 happy.
2018-01-11Changing relative php scripts paths to real ones.Max Romanov1-46/+71
This is required to run phpMyAdmin.
2017-12-28Fixed Go package and PHP module building.0.3Igor Sysoev1-1/+1
Go package and PHP module could not be built after changeset 5817734dd9b9.
2017-12-28HTTP keep-alive connections support.Igor Sysoev1-15/+10
2017-12-27Introducing application 'atexit' hook.Max Romanov1-0/+1
Finalizing Python interpreter. This closes #65 issue on GitHub.
2017-10-18Added the debug option to module compatibility vector.Igor Sysoev1-1/+1
2017-09-07Moving body data before headers for PHP POST.Max Romanov1-2/+2
PHP SAPI tries to read body for POST request before registering header-specific variables. For other methods, read_post_body() called by SAPI after variables registration. This closes #10 issue on GitHub.
2017-09-06Style fixes.Igor Sysoev1-0/+7
2017-09-01Added SERVER_ADDR parameter for Python and PHP modules.Igor Sysoev1-0/+2
2017-08-31PHP SAPI: typo fixed.Sergey Kandaurov1-1/+1
2017-08-31nginext has been renamed to unit.Igor Sysoev1-3/+3
2017-08-31Introduced module compatibility vector.Igor Sysoev1-0/+6
2017-08-17The new module configuration interface.Igor Sysoev1-111/+4
Configuration and building example: ./configure ./configure python ./configure php ./configure go make all or ./configure make nginext ./configure python make python ./configure php make php ./configure go make go Modules configuration options and building examples: ./configure python --module=python2 --config=python2.7-config make python2 ./configure php --module=php7 --config=php7.0-config --lib-path=/usr/local/php7.0 make php7 ./configure go --go=go1.6 --go-path=${HOME}/go1.6 make go1.6
2017-08-11Request body read state implemented.Max Romanov1-50/+17
With specific timeout and buffer size settings.
2017-07-12PHP SAPI: dynamic worker initialization.Max Romanov1-60/+87
2017-07-05PHP SAPI: SERVER_NAME, SERVER_PORT and REMOTE_ADDR introduced.Max Romanov1-79/+146
2017-07-05Complex target parser copied from NGINX.Max Romanov1-14/+24
nxt_app_request_header_t fields renamed: - 'path' renamed to 'target'. - 'path_no_query' renamed to 'path' and contains parsed value.
2017-06-26PHP post body processing fixed, default index name introduced.Max Romanov1-8/+32
2017-06-23PHP app request processing.Max Romanov1-275/+419
2017-06-20Using new memory pool implementation.Igor Sysoev1-3/+3
2017-03-09Processes refactoring.Igor Sysoev1-25/+25
The cycle has been renamed to the runtime.
2017-02-01More refactoring relicts removed.Igor Sysoev1-3/+3
2017-01-17Initial version.Igor Sysoev1-0/+611