parent
6ec0ff3596
commit
2821b3347c
4 changed files with 40 additions and 10 deletions
|
@ -88,6 +88,9 @@ static void nxt_php_set_options(nxt_task_t *task, nxt_conf_value_t *options,
|
||||||
int type);
|
int type);
|
||||||
static nxt_int_t nxt_php_alter_option(nxt_str_t *name, nxt_str_t *value,
|
static nxt_int_t nxt_php_alter_option(nxt_str_t *name, nxt_str_t *value,
|
||||||
int type);
|
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,
|
static void nxt_php_disable(nxt_task_t *task, const char *type,
|
||||||
nxt_str_t *value, char **ptr, nxt_php_disable_t disable);
|
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)) {
|
if (nxt_str_eq(&name, "disable_functions", 17)) {
|
||||||
|
#ifdef NXT_PHP8
|
||||||
|
nxt_php_disable_functions(&value);
|
||||||
|
#else
|
||||||
nxt_php_disable(task, "function", &value,
|
nxt_php_disable(task, "function", &value,
|
||||||
&PG(disable_functions),
|
&PG(disable_functions),
|
||||||
zend_disable_function);
|
zend_disable_function);
|
||||||
|
#endif
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -680,6 +687,29 @@ nxt_php_alter_option(nxt_str_t *name, nxt_str_t *value, int type)
|
||||||
#endif
|
#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
|
static void
|
||||||
nxt_php_disable(nxt_task_t *task, const char *type, nxt_str_t *value,
|
nxt_php_disable(nxt_task_t *task, const char *type, nxt_str_t *value,
|
||||||
char **ptr, nxt_php_disable_t disable)
|
char **ptr, nxt_php_disable_t disable)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
header('Content-Length: 0');
|
header('Content-Length: 0');
|
||||||
header('X-Var-1: ' . $_GET['var1']);
|
header('X-Var-1: ' . $_GET['var1']);
|
||||||
header('X-Var-2: ' . $_GET['var2'] . isset($_GET['var2']));
|
header('X-Var-2: ' . (isset($_GET['var2']) ? $_GET['var2'] : 'not set'));
|
||||||
header('X-Var-3: ' . $_GET['var3'] . isset($_GET['var3']));
|
header('X-Var-3: ' . (isset($_GET['var3']) ? $_GET['var3'] : 'not set'));
|
||||||
header('X-Var-4: ' . $_GET['var4'] . isset($_GET['var4']));
|
header('X-Var-4: ' . (isset($_GET['var4']) ? $_GET['var4'] : 'not set'));
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?php
|
<?php
|
||||||
header('Content-Length: 0');
|
header('Content-Length: 0');
|
||||||
header('X-Var-1: ' . $_POST['var1']);
|
header('X-Var-1: ' . $_POST['var1']);
|
||||||
header('X-Var-2: ' . $_POST['var2'] . isset($_POST['var2']));
|
header('X-Var-2: ' . (isset($_POST['var2']) ? $_POST['var2'] : 'not set'));
|
||||||
header('X-Var-3: ' . $_POST['var3'] . isset($_POST['var3']));
|
header('X-Var-3: ' . (isset($_POST['var3']) ? $_POST['var3'] : 'not set'));
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -198,9 +198,9 @@ class TestPHPApplication(TestApplicationPHP):
|
||||||
|
|
||||||
resp = self.get(url='/?var1=val1&var2=&var3')
|
resp = self.get(url='/?var1=val1&var2=&var3')
|
||||||
assert resp['headers']['X-Var-1'] == 'val1', 'GET variables'
|
assert resp['headers']['X-Var-1'] == 'val1', 'GET variables'
|
||||||
assert resp['headers']['X-Var-2'] == '1', 'GET variables 2'
|
assert resp['headers']['X-Var-2'] == '', 'GET variables 2'
|
||||||
assert resp['headers']['X-Var-3'] == '1', 'GET variables 3'
|
assert resp['headers']['X-Var-3'] == '', 'GET variables 3'
|
||||||
assert resp['headers']['X-Var-4'] == '', 'GET variables 4'
|
assert resp['headers']['X-Var-4'] == 'not set', 'GET variables 4'
|
||||||
|
|
||||||
def test_php_application_post_variables(self):
|
def test_php_application_post_variables(self):
|
||||||
self.load('post_variables')
|
self.load('post_variables')
|
||||||
|
@ -214,8 +214,8 @@ class TestPHPApplication(TestApplicationPHP):
|
||||||
body='var1=val1&var2=',
|
body='var1=val1&var2=',
|
||||||
)
|
)
|
||||||
assert resp['headers']['X-Var-1'] == 'val1', 'POST variables'
|
assert resp['headers']['X-Var-1'] == 'val1', 'POST variables'
|
||||||
assert resp['headers']['X-Var-2'] == '1', 'POST variables 2'
|
assert resp['headers']['X-Var-2'] == '', 'POST variables 2'
|
||||||
assert resp['headers']['X-Var-3'] == '', 'POST variables 3'
|
assert resp['headers']['X-Var-3'] == 'not set', 'POST variables 3'
|
||||||
|
|
||||||
def test_php_application_cookies(self):
|
def test_php_application_cookies(self):
|
||||||
self.load('cookies')
|
self.load('cookies')
|
||||||
|
|
Loading…
Reference in a new issue