summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/nxt_php_sapi.c30
-rw-r--r--test/php/get_variables/index.php6
-rw-r--r--test/php/post_variables/index.php4
-rw-r--r--test/test_php_application.py10
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')