PHP: added setting of php.ini configuration file path.

This commit is contained in:
Valentin Bartenev
2018-06-07 16:17:31 +03:00
parent 771dc2f55e
commit 388390888b
4 changed files with 49 additions and 5 deletions

View File

@@ -46,9 +46,10 @@ typedef struct {
typedef struct {
char *root;
nxt_str_t script;
nxt_str_t index;
char *root;
nxt_str_t script;
nxt_str_t index;
nxt_conf_value_t *options;
} nxt_php_app_conf_t;

View File

@@ -201,6 +201,16 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_python_members[] = {
};
static nxt_conf_vldt_object_t nxt_conf_vldt_php_options_members[] = {
{ nxt_string("file"),
NXT_CONF_VLDT_STRING,
NULL,
NULL },
NXT_CONF_VLDT_END
};
static nxt_conf_vldt_object_t nxt_conf_vldt_php_members[] = {
{ nxt_string("root"),
NXT_CONF_VLDT_STRING,
@@ -217,6 +227,11 @@ static nxt_conf_vldt_object_t nxt_conf_vldt_php_members[] = {
NULL,
NULL },
{ nxt_string("options"),
NXT_CONF_VLDT_OBJECT,
&nxt_conf_vldt_object,
(void *) &nxt_conf_vldt_php_options_members },
NXT_CONF_VLDT_NEXT(&nxt_conf_vldt_common_members)
};

View File

@@ -169,6 +169,12 @@ static nxt_conf_map_t nxt_php_app_conf[] = {
NXT_CONF_MAP_STR,
offsetof(nxt_common_app_conf_t, u.php.index),
},
{
nxt_string("options"),
NXT_CONF_MAP_PTR,
offsetof(nxt_common_app_conf_t, u.php.options),
},
};

View File

@@ -97,7 +97,7 @@ static sapi_module_struct nxt_php_sapi_module =
0, /* php_ini_ignore */
#ifdef NXT_HAVE_PHP_IGNORE_CWD
0, /* php_ini_ignore_cwd */
1, /* php_ini_ignore_cwd */
#endif
NULL, /* get_fd */
@@ -184,10 +184,13 @@ static nxt_int_t
nxt_php_init(nxt_task_t *task, nxt_common_app_conf_t *conf)
{
u_char *p;
nxt_str_t rpath;
nxt_str_t rpath, ini_path;
nxt_str_t *root, *path, *script, *index;
nxt_conf_value_t *value;
nxt_php_app_conf_t *c;
static nxt_str_t file_str = nxt_string("file");
c = &conf->u.php;
if (c->root == NULL) {
@@ -271,6 +274,25 @@ nxt_php_init(nxt_task_t *task, nxt_common_app_conf_t *conf)
}
sapi_startup(&nxt_php_sapi_module);
if (c->options != NULL) {
value = nxt_conf_get_object_member(c->options, &file_str, NULL);
if (value != NULL) {
nxt_conf_get_string(value, &ini_path);
p = nxt_malloc(ini_path.length + 1);
if (nxt_slow_path(p == NULL)) {
return NXT_ERROR;
}
nxt_php_sapi_module.php_ini_path_override = (char *) p;
p = nxt_cpymem(p, ini_path.start, ini_path.length);
*p = '\0';
}
}
nxt_php_startup(&nxt_php_sapi_module);
return NXT_OK;