diff options
author | Dmitry Stogov <dmitry@zend.com> | 2013-03-17 11:42:25 +0400 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2013-03-17 11:42:25 +0400 |
commit | 0b8b6a727ddd31ff14e4af919c77a3f1b5e2b3f0 (patch) | |
tree | 44e68f9fb943949e892aa2e143429897124c1ad1 /main/php_ini.c | |
parent | 930b272d700a7f854357628e446505fab29906a8 (diff) | |
download | php-git-0b8b6a727ddd31ff14e4af919c77a3f1b5e2b3f0.tar.gz |
Added ability to load zend_extensions without absolute path names
Diffstat (limited to 'main/php_ini.c')
-rw-r--r-- | main/php_ini.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/main/php_ini.c b/main/php_ini.c index b15a3846dd..59e9ae80d3 100644 --- a/main/php_ini.c +++ b/main/php_ini.c @@ -357,7 +357,24 @@ static void php_load_php_extension_cb(void *arg TSRMLS_DC) */ static void php_load_zend_extension_cb(void *arg TSRMLS_DC) { - zend_load_extension(*((char **) arg)); + char *filename = *((char **) arg); + int length = strlen(filename); + + if (IS_ABSOLUTE_PATH(filename, length)) { + zend_load_extension(filename); + } else { + char *libpath; + char *extension_dir = INI_STR("extension_dir"); + int extension_dir_len = strlen(extension_dir); + + if (IS_SLASH(extension_dir[extension_dir_len-1])) { + spprintf(&libpath, 0, "%s%s", extension_dir, filename); + } else { + spprintf(&libpath, 0, "%s%c%s", extension_dir, DEFAULT_SLASH, filename); + } + zend_load_extension(libpath); + efree(libpath); + } } /* }}} */ |