static void php_load_function_extension_cb(void *arg) { zval *extension = (zval *) arg; zval zval; php_dl(extension, MODULE_PERSISTENT, &zval); }
int fpm_php_apply_defines_ex(struct key_value_s *kv, int mode) /* {{{ */ { char *name = kv->key; char *value = kv->value; int name_len = strlen(name); int value_len = strlen(value); if (!strcmp(name, "extension") && *value) { zval zv; php_dl(value, MODULE_PERSISTENT, &zv, 1); return Z_TYPE(zv) == IS_TRUE; } if (fpm_php_zend_ini_alter_master(name, name_len, value, value_len, mode, PHP_INI_STAGE_ACTIVATE) == FAILURE) { return -1; } if (!strcmp(name, "disable_functions") && *value) { char *v = strdup(value); PG(disable_functions) = v; fpm_php_disable(v, zend_disable_function); return 1; } if (!strcmp(name, "disable_classes") && *value) { char *v = strdup(value); PG(disable_classes) = v; fpm_php_disable(v, zend_disable_class); return 1; } return 1; }
/* {{{ proto int dl(string extension_filename) Load a PHP extension at runtime */ PHPAPI PHP_FUNCTION(dl) { char *filename; int filename_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &filename, &filename_len) == FAILURE) { return; } if (!PG(enable_dl)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Dynamically loaded extensions aren't enabled"); RETURN_FALSE; } else if (PG(safe_mode)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Dynamically loaded extensions aren't allowed when running in Safe Mode"); RETURN_FALSE; } if (filename_len >= MAXPATHLEN) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "File name exceeds the maximum allowed length of %d characters", MAXPATHLEN); RETURN_FALSE; } if ((strncmp(sapi_module.name, "cgi", 3) != 0) && (strcmp(sapi_module.name, "cli") != 0) && (strncmp(sapi_module.name, "embed", 5) != 0) ) { #ifdef ZTS php_error_docref(NULL TSRMLS_CC, E_WARNING, "Not supported in multithreaded Web servers - use extension=%s in your php.ini", filename); RETURN_FALSE; #else php_error_docref(NULL TSRMLS_CC, E_DEPRECATED, "dl() is deprecated - use extension=%s in your php.ini", filename); #endif } php_dl(filename, MODULE_TEMPORARY, return_value, 0 TSRMLS_CC); if (Z_LVAL_P(return_value) == 1) { EG(full_tables_cleanup) = 1; } }
/* {{{ proto int dl(string extension_filename) Load a PHP extension at runtime */ PHPAPI PHP_FUNCTION(dl) { char *filename; size_t filename_len; ZEND_PARSE_PARAMETERS_START(1, 1) Z_PARAM_STRING(filename, filename_len) ZEND_PARSE_PARAMETERS_END(); if (!PG(enable_dl)) { php_error_docref(NULL, E_WARNING, "Dynamically loaded extensions aren't enabled"); RETURN_FALSE; } if (filename_len >= MAXPATHLEN) { php_error_docref(NULL, E_WARNING, "File name exceeds the maximum allowed length of %d characters", MAXPATHLEN); RETURN_FALSE; } php_dl(filename, MODULE_TEMPORARY, return_value, 0); if (Z_TYPE_P(return_value) == IS_TRUE) { EG(full_tables_cleanup) = 1; } }
/* {{{ proto int dl(string extension_filename) Load a PHP extension at runtime */ PHPAPI PHP_FUNCTION(dl) { char *filename; size_t filename_len; if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &filename, &filename_len) == FAILURE) { return; } if (!PG(enable_dl)) { php_error_docref(NULL, E_WARNING, "Dynamically loaded extensions aren't enabled"); RETURN_FALSE; } if (filename_len >= MAXPATHLEN) { php_error_docref(NULL, E_WARNING, "File name exceeds the maximum allowed length of %d characters", MAXPATHLEN); RETURN_FALSE; } php_dl(filename, MODULE_TEMPORARY, return_value, 0); if (Z_TYPE_P(return_value) == IS_TRUE) { EG(full_tables_cleanup) = 1; } }