cosite
Новичок
Добрый день.
Задача модуля изменить несколько значений из $_SERVER массива
Написал такой код
Чтобы вызвать код, надо в скрипте вызвать функцию
Такой подход работает, все отлично меняется.
Вопрос в том, можно ли замену делать без вызова кода в пхп?
Пытался код вызвать из
Но на этапе RINIT еще не определен PG(http_globals)[TRACK_VARS_SERVER], поэтому код не срабатывает.
Задача модуля изменить несколько значений из $_SERVER массива
Написал такой код
Код:
PHP_FUNCTION(set_server_admin)
{
my_set_server_var("SERVER_ADMIN", "[email protected]");
RETURN_STRING("change OK", 1);
}
int my_set_server_var(char *name, char *val) {
HashTable *_SERVER;
zval **stuff;
zval *temp;
if (!PG(http_globals)[TRACK_VARS_SERVER]) {
return FAILURE;
}
_SERVER = Z_ARRVAL_P(PG(http_globals)[TRACK_VARS_SERVER]);
if (SUCCESS == zend_hash_find(_SERVER, name, strlen(name) + 1, (void **) &stuff)) {
zend_hash_del(_SERVER, name, strlen(name) + 1);
}
ALLOC_INIT_ZVAL(temp);
ZVAL_STRING(temp, val, 1);
zend_hash_add(_SERVER, name, strlen(name) + 1, &temp, sizeof(zval *), NULL);
return SUCCESS;
}
Чтобы вызвать код, надо в скрипте вызвать функцию
PHP:
set_server_admin();
Вопрос в том, можно ли замену делать без вызова кода в пхп?
Пытался код вызвать из
Код:
PHP_RINIT_FUNCTION(adminer) {
my_set_server_var("SERVER_ADMIN", "[email protected]");
}