The attached patch fixes the problems when you build session extension as shared and MM. (--enable-session=shared --with-mm) Also adds a list of registered save handlers to the phpinfo() output.
Please test/review. It works fine here, as shared and as static. Now the mm module is treated like the other external handlers.. --Jani
? .libs Index: config.m4 =================================================================== RCS file: /repository/php4/ext/session/config.m4,v retrieving revision 1.18 diff -u -r1.18 config.m4 --- config.m4 4 May 2002 16:48:48 -0000 1.18 +++ config.m4 26 Jun 2002 17:39:59 -0000 @@ -8,6 +8,15 @@ PHP_ARG_ENABLE(session, whether to enable PHP sessions, [ --disable-session Disable session support], yes) +if test "$PHP_SESSION" != "no"; then + AC_CHECK_FUNCS(pread pwrite) + PHP_MISSING_PWRITE_DECL + PHP_MISSING_PREAD_DECL + PHP_NEW_EXTENSION(session, session.c mod_files.c mod_mm.c mod_user.c, $ext_shared) + PHP_SUBST(SESSION_SHARED_LIBADD) + AC_DEFINE(HAVE_PHP_SESSION,1,[ ]) +fi + if test "$PHP_MM" != "no"; then for i in /usr/local /usr $PHP_MM; do if test -f "$i/include/mm.h"; then @@ -22,14 +31,4 @@ PHP_ADD_LIBRARY_WITH_PATH(mm, $MM_DIR/lib, SESSION_SHARED_LIBADD) PHP_ADD_INCLUDE($MM_DIR/include) AC_DEFINE(HAVE_LIBMM, 1, [Whether you have libmm]) - PHP_MODULE_PTR(phpext_ps_mm_ptr) -fi - -if test "$PHP_SESSION" != "no"; then - AC_CHECK_FUNCS(pread pwrite) - PHP_MISSING_PWRITE_DECL - PHP_MISSING_PREAD_DECL - PHP_NEW_EXTENSION(session, session.c mod_files.c mod_mm.c mod_user.c, $ext_shared) - PHP_SUBST(SESSION_SHARED_LIBADD) - AC_DEFINE(HAVE_PHP_SESSION,1,[ ]) fi Index: mod_mm.c =================================================================== RCS file: /repository/php4/ext/session/mod_mm.c,v retrieving revision 1.38 diff -u -r1.38 mod_mm.c --- mod_mm.c 6 Mar 2002 12:25:01 -0000 1.38 +++ mod_mm.c 26 Jun 2002 17:40:00 -0000 @@ -423,17 +423,6 @@ return SUCCESS; } -zend_module_entry php_session_mm_module = { - STANDARD_MODULE_HEADER, - "session mm", - NULL, - PHP_MINIT(ps_mm), PHP_MSHUTDOWN(ps_mm), - NULL, NULL, - NULL, - NO_VERSION_YET, - STANDARD_MODULE_PROPERTIES -}; - #endif /* Index: mod_mm.h =================================================================== RCS file: /repository/php4/ext/session/mod_mm.h,v retrieving revision 1.6 diff -u -r1.6 mod_mm.h --- mod_mm.h 28 Feb 2002 08:26:40 -0000 1.6 +++ mod_mm.h 26 Jun 2002 17:40:00 -0000 @@ -23,19 +23,13 @@ #include "php_session.h" +PHP_MINIT_FUNCTION(ps_mm); +PHP_MSHUTDOWN_FUNCTION(ps_mm); + extern ps_module ps_mod_mm; #define ps_mm_ptr &ps_mod_mm -extern zend_module_entry php_session_mm_module; -#define phpext_ps_mm_ptr &php_session_mm_module - PS_FUNCS(mm); -#else - -#define ps_mm_ptr NULL -#define phpext_ps_mm_ptr NULL - #endif - #endif Index: session.c =================================================================== RCS file: /repository/php4/ext/session/session.c,v retrieving revision 1.309 diff -u -r1.309 session.c --- session.c 12 Jun 2002 08:18:36 -0000 1.309 +++ session.c 26 Jun 2002 17:40:01 -0000 @@ -50,6 +50,10 @@ #include "mod_files.h" #include "mod_user.h" +#ifdef HAVE_LIBMM +#include "mod_mm.h" +#endif + /* {{{ session_functions[] */ function_entry session_functions[] = { @@ -1459,21 +1463,50 @@ zend_register_auto_global("_SESSION", sizeof("_SESSION")-1 TSRMLS_CC); PS(module_number) = module_number; /* if we really need this var we need to init it in zts mode as well! */ + REGISTER_INI_ENTRIES(); + +#ifdef HAVE_LIBMM + PHP_MINIT(ps_mm) (INIT_FUNC_ARGS_PASSTHRU); +#endif return SUCCESS; } PHP_MSHUTDOWN_FUNCTION(session) { UNREGISTER_INI_ENTRIES(); + +#ifdef HAVE_LIBMM + PHP_MSHUTDOWN(ps_mm) (SHUTDOWN_FUNC_ARGS_PASSTHRU); +#endif + return SUCCESS; } PHP_MINFO_FUNCTION(session) { + ps_module **mod; + smart_str handlers = {0}; + int i; + + for (i = 0, mod = ps_modules; i < MAX_MODULES; i++, mod++) { + if (*mod && (*mod)->name) { + smart_str_appends(&handlers, (*mod)->name); + smart_str_appendc(&handlers, ' '); + } + } + php_info_print_table_start(); php_info_print_table_row(2, "Session Support", "enabled" ); + + if (handlers.c) { + smart_str_0(&handlers); + php_info_print_table_row(2, "Registered save handlers", handlers.c); + smart_str_free(&handlers); + } else { + php_info_print_table_row(2, "Registered save handlers", "none"); + } php_info_print_table_end(); DISPLAY_INI_ENTRIES();
-- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.php