diff options
-rw-r--r-- | src/nxt_php_sapi.c | 30 | ||||
-rw-r--r-- | test/php/get_variables/index.php | 6 | ||||
-rw-r--r-- | test/php/post_variables/index.php | 4 | ||||
-rw-r--r-- | test/test_php_application.py | 10 |
4 files changed, 40 insertions, 10 deletions
diff --git a/src/nxt_php_sapi.c b/src/nxt_php_sapi.c index de329ad7..234ceef8 100644 --- a/src/nxt_php_sapi.c +++ b/src/nxt_php_sapi.c @@ -88,6 +88,9 @@ static void nxt_php_set_options(nxt_task_t *task, nxt_conf_value_t *options, int type); static nxt_int_t nxt_php_alter_option(nxt_str_t *name, nxt_str_t *value, int type); +#ifdef NXT_PHP8 +static void nxt_php_disable_functions(nxt_str_t *str); +#endif static void nxt_php_disable(nxt_task_t *task, const char *type, nxt_str_t *value, char **ptr, nxt_php_disable_t disable); @@ -589,9 +592,13 @@ nxt_php_set_options(nxt_task_t *task, nxt_conf_value_t *options, int type) } if (nxt_str_eq(&name, "disable_functions", 17)) { +#ifdef NXT_PHP8 + nxt_php_disable_functions(&value); +#else nxt_php_disable(task, "function", &value, &PG(disable_functions), zend_disable_function); +#endif continue; } @@ -680,6 +687,29 @@ nxt_php_alter_option(nxt_str_t *name, nxt_str_t *value, int type) #endif +#ifdef NXT_PHP8 + +static void +nxt_php_disable_functions(nxt_str_t *str) +{ + char *p; + + p = nxt_malloc(str->length + 1); + if (nxt_slow_path(p == NULL)) { + return; + } + + nxt_memcpy(p, str->start, str->length); + p[str->length] = '\0'; + + zend_disable_functions(p); + + nxt_free(p); +} + +#endif + + static void nxt_php_disable(nxt_task_t *task, const char *type, nxt_str_t *value, char **ptr, nxt_php_disable_t disable) diff --git a/test/php/get_variables/index.php b/test/php/get_variables/index.php index dd7ef985..d6eb7d6b 100644 --- a/test/php/get_variables/index.php +++ b/test/php/get_variables/index.php @@ -1,7 +1,7 @@ <?php header('Content-Length: 0'); header('X-Var-1: ' . $_GET['var1']); -header('X-Var-2: ' . $_GET['var2'] . isset($_GET['var2'])); -header('X-Var-3: ' . $_GET['var3'] . isset($_GET['var3'])); -header('X-Var-4: ' . $_GET['var4'] . isset($_GET['var4'])); +header('X-Var-2: ' . (isset($_GET['var2']) ? $_GET['var2'] : 'not set')); +header('X-Var-3: ' . (isset($_GET['var3']) ? $_GET['var3'] : 'not set')); +header('X-Var-4: ' . (isset($_GET['var4']) ? $_GET['var4'] : 'not set')); ?> diff --git a/test/php/post_variables/index.php b/test/php/post_variables/index.php index 5ea17324..8981d54d 100644 --- a/test/php/post_variables/index.php +++ b/test/php/post_variables/index.php @@ -1,6 +1,6 @@ <?php header('Content-Length: 0'); header('X-Var-1: ' . $_POST['var1']); -header('X-Var-2: ' . $_POST['var2'] . isset($_POST['var2'])); -header('X-Var-3: ' . $_POST['var3'] . isset($_POST['var3'])); +header('X-Var-2: ' . (isset($_POST['var2']) ? $_POST['var2'] : 'not set')); +header('X-Var-3: ' . (isset($_POST['var3']) ? $_POST['var3'] : 'not set')); ?> diff --git a/test/test_php_application.py b/test/test_php_application.py index 48fab5ee..063d3e0c 100644 --- a/test/test_php_application.py +++ b/test/test_php_application.py @@ -198,9 +198,9 @@ class TestPHPApplication(TestApplicationPHP): resp = self.get(url='/?var1=val1&var2=&var3') assert resp['headers']['X-Var-1'] == 'val1', 'GET variables' - assert resp['headers']['X-Var-2'] == '1', 'GET variables 2' - assert resp['headers']['X-Var-3'] == '1', 'GET variables 3' - assert resp['headers']['X-Var-4'] == '', 'GET variables 4' + assert resp['headers']['X-Var-2'] == '', 'GET variables 2' + assert resp['headers']['X-Var-3'] == '', 'GET variables 3' + assert resp['headers']['X-Var-4'] == 'not set', 'GET variables 4' def test_php_application_post_variables(self): self.load('post_variables') @@ -214,8 +214,8 @@ class TestPHPApplication(TestApplicationPHP): body='var1=val1&var2=', ) assert resp['headers']['X-Var-1'] == 'val1', 'POST variables' - assert resp['headers']['X-Var-2'] == '1', 'POST variables 2' - assert resp['headers']['X-Var-3'] == '', 'POST variables 3' + assert resp['headers']['X-Var-2'] == '', 'POST variables 2' + assert resp['headers']['X-Var-3'] == 'not set', 'POST variables 3' def test_php_application_cookies(self): self.load('cookies') |