summaryrefslogtreecommitdiff
path: root/main/php_ini.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2013-03-17 11:42:25 +0400
committerDmitry Stogov <dmitry@zend.com>2013-03-17 11:42:25 +0400
commit0b8b6a727ddd31ff14e4af919c77a3f1b5e2b3f0 (patch)
tree44e68f9fb943949e892aa2e143429897124c1ad1 /main/php_ini.c
parent930b272d700a7f854357628e446505fab29906a8 (diff)
downloadphp-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.c19
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);
+ }
}
/* }}} */