summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/standard/dl.c10
-rw-r--r--ext/standard/dl.h2
-rw-r--r--main/php_ini.c2
-rw-r--r--sapi/cli/php_cli.c2
4 files changed, 8 insertions, 8 deletions
diff --git a/ext/standard/dl.c b/ext/standard/dl.c
index 2245f4342c..4bff2e5655 100644
--- a/ext/standard/dl.c
+++ b/ext/standard/dl.c
@@ -84,7 +84,7 @@ PHP_FUNCTION(dl)
#endif
}
- php_dl(*file, MODULE_TEMPORARY, return_value TSRMLS_CC);
+ php_dl(*file, MODULE_TEMPORARY, return_value, 0 TSRMLS_CC);
EG(full_tables_cleanup) = 1;
}
@@ -101,7 +101,7 @@ PHP_FUNCTION(dl)
/* {{{ php_dl
*/
-void php_dl(zval *file, int type, zval *return_value TSRMLS_DC)
+void php_dl(zval *file, int type, zval *return_value, int start_now TSRMLS_DC)
{
void *handle;
char *libpath;
@@ -223,12 +223,12 @@ void php_dl(zval *file, int type, zval *return_value TSRMLS_DC)
RETURN_FALSE;
}
- if (type == MODULE_TEMPORARY && zend_startup_module_ex(module_entry TSRMLS_CC) == FAILURE) {
+ if ((type == MODULE_TEMPORARY || start_now) && zend_startup_module_ex(module_entry TSRMLS_CC) == FAILURE) {
DL_UNLOAD(handle);
RETURN_FALSE;
}
- if ((type == MODULE_TEMPORARY) && module_entry->request_startup_func) {
+ if ((type == MODULE_TEMPORARY || start_now) && module_entry->request_startup_func) {
if (module_entry->request_startup_func(type, module_entry->module_number TSRMLS_CC) == FAILURE) {
php_error_docref(NULL TSRMLS_CC, error_type, "Unable to initialize module '%s'", module_entry->name);
DL_UNLOAD(handle);
@@ -246,7 +246,7 @@ PHP_MINFO_FUNCTION(dl)
#else
-void php_dl(zval *file, int type, zval *return_value TSRMLS_DC)
+void php_dl(zval *file, int type, zval *return_value, int start_now TSRMLS_DC)
{
php_error_docref(NULL TSRMLS_CC, E_WARNING, "Cannot dynamically load %s - dynamic modules are not supported", Z_STRVAL_P(file));
RETURN_FALSE;
diff --git a/ext/standard/dl.h b/ext/standard/dl.h
index 1728d10338..607047355b 100644
--- a/ext/standard/dl.h
+++ b/ext/standard/dl.h
@@ -23,7 +23,7 @@
#ifndef DL_H
#define DL_H
-PHPAPI void php_dl(zval *file,int type, zval *return_value TSRMLS_DC);
+PHPAPI void php_dl(zval *file,int type, zval *return_value, int start_now TSRMLS_DC);
/* dynamic loading functions */
PHP_FUNCTION(dl);
diff --git a/main/php_ini.c b/main/php_ini.c
index 65139e43ce..3745cb4dc0 100644
--- a/main/php_ini.c
+++ b/main/php_ini.c
@@ -242,7 +242,7 @@ static void php_load_function_extension_cb(void *arg TSRMLS_DC)
zval *extension = (zval *) arg;
zval zval;
- php_dl(extension, MODULE_PERSISTENT, &zval TSRMLS_CC);
+ php_dl(extension, MODULE_PERSISTENT, &zval, 0 TSRMLS_CC);
}
/* }}} */
diff --git a/sapi/cli/php_cli.c b/sapi/cli/php_cli.c
index 6f66ba61f9..1767b9c940 100644
--- a/sapi/cli/php_cli.c
+++ b/sapi/cli/php_cli.c
@@ -438,7 +438,7 @@ static void define_command_line_ini_entry(char *arg TSRMLS_DC)
if (!strcasecmp(name, "extension")) { /* load function module */
zval extension, zval;
ZVAL_STRING(&extension, value, 0);
- php_dl(&extension, MODULE_TEMPORARY, &zval TSRMLS_CC);
+ php_dl(&extension, MODULE_PERSISTENT, &zval, 1 TSRMLS_CC);
} else {
zend_alter_ini_entry(name, strlen(name)+1, value, strlen(value), PHP_INI_SYSTEM, PHP_INI_STAGE_ACTIVATE);
}