diff options
author | Shane Caraveo <shane@php.net> | 2000-04-30 04:15:26 +0000 |
---|---|---|
committer | Shane Caraveo <shane@php.net> | 2000-04-30 04:15:26 +0000 |
commit | 8d3ce80f48fa7f9e7b15d6e4521c73db622bce67 (patch) | |
tree | 0c666b81497c16c96b65c33b6f521d1d1ea4075d /sapi | |
parent | 953fe189dacec1f3079f1c2c043b6644725b643e (diff) | |
download | php-git-8d3ce80f48fa7f9e7b15d6e4521c73db622bce67.tar.gz |
apache module now compiles under win32, apache loads, but crashes on line 1167 main.c on page request
Diffstat (limited to 'sapi')
-rw-r--r-- | sapi/apache/apachephp4.dsp | 149 | ||||
-rw-r--r-- | sapi/apache/mod_php4.c | 63 | ||||
-rw-r--r-- | sapi/apache/mod_php4.h | 2 | ||||
-rw-r--r-- | sapi/apache/php_apache.c | 11 | ||||
-rw-r--r-- | sapi/apache/sapi_apache.c | 6 |
5 files changed, 226 insertions, 5 deletions
diff --git a/sapi/apache/apachephp4.dsp b/sapi/apache/apachephp4.dsp new file mode 100644 index 0000000000..13f39a469f --- /dev/null +++ b/sapi/apache/apachephp4.dsp @@ -0,0 +1,149 @@ +# Microsoft Developer Studio Project File - Name="ApachePHP4" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=ApachePHP4 - Win32 Release_TS
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ApachePHP4.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ApachePHP4.mak" CFG="ApachePHP4 - Win32 Release_TS"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ApachePHP4 - Win32 Release_TS" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApachePHP4 - Win32 Debug_TS" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApachePHP4 - Win32 Release_TS_inline" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ApachePHP4 - Win32 Release_TS"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_TS"
+# PROP BASE Intermediate_Dir "Release_TS"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_TS"
+# PROP Intermediate_Dir "Release_TS"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHEPHP4_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "...\..\include" /I "..\..\win32" /I "..\..\Zend" /I "..\.." /I "..\..\..\bindlib_w32" /I "\apache\src\include" /D ZEND_DEBUG=0 /D "ZTS" /D "ZEND_WIN32" /D "PHP_WIN32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHEPHP4_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 ZendTS.lib TSRM.lib php4ts.lib ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /libpath:"\apache\src\corer" /libpath:"..\..\Release_TS" /libpath:"..\..\TSRM\Release_TS" /libpath:"..\..\Zend\Release_TS"
+
+!ELSEIF "$(CFG)" == "ApachePHP4 - Win32 Debug_TS"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Debug_TS"
+# PROP BASE Intermediate_Dir "Debug_TS"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Debug_TS"
+# PROP Intermediate_Dir "Debug_TS"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHEPHP4_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "...\..\include" /I "..\..\win32" /I "..\..\Zend" /I "..\.." /I "..\..\..\bindlib_w32" /I "\apache\src\include" /D ZEND_DEBUG=1 /D "ZTS" /D "ZEND_WIN32" /D "PHP_WIN32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHEPHP4_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 ZendTS.lib TSRM.lib php4ts_debug.lib ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /libpath:"\apache\src\cored" /libpath:"..\..\Debug_TS" /libpath:"..\..\TSRM\Debug_TS" /libpath:"..\..\Zend\Debug_TS"
+
+!ELSEIF "$(CFG)" == "ApachePHP4 - Win32 Release_TS_inline"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release_TS_inline"
+# PROP BASE Intermediate_Dir "Release_TS_inline"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release_TS_inline"
+# PROP Intermediate_Dir "Release_TS_inline"
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHEPHP4_EXPORTS" /YX /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "...\..\include" /I "..\..\win32" /I "..\..\Zend" /I "..\.." /I "..\..\..\bindlib_w32" /I "\apache\src\include" /D ZEND_DEBUG=0 /D "ZTS" /D "ZEND_WIN32" /D "PHP_WIN32" /D "ZEND_WIN32_FORCE_INLINE" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "_USRDLL" /D "APACHEPHP4_EXPORTS" /YX /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386
+# ADD LINK32 ZendTS.lib TSRM.lib php4ts.lib ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /machine:I386 /libpath:"\apache\src\corer" /libpath:"..\..\Release_TS_inline" /libpath:"..\..\TSRM\Release_TS_inline" /libpath:"..\..\Zend\Release_TS_inline"
+
+!ENDIF
+
+# Begin Target
+
+# Name "ApachePHP4 - Win32 Release_TS"
+# Name "ApachePHP4 - Win32 Debug_TS"
+# Name "ApachePHP4 - Win32 Release_TS_inline"
+# Begin Group "Source Files"
+
+# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
+# Begin Source File
+
+SOURCE=.\mod_php4.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\php_apache.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\sapi_apache.c
+# End Source File
+# End Group
+# Begin Group "Header Files"
+
+# PROP Default_Filter "h;hpp;hxx;hm;inl"
+# Begin Source File
+
+SOURCE=.\mod_php4.h
+# End Source File
+# Begin Source File
+
+SOURCE=.\php_apache_http.h
+# End Source File
+# End Group
+# Begin Group "Resource Files"
+
+# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
+# End Group
+# End Target
+# End Project
diff --git a/sapi/apache/mod_php4.c b/sapi/apache/mod_php4.c index c51600f70f..a43ad6d0d7 100644 --- a/sapi/apache/mod_php4.c +++ b/sapi/apache/mod_php4.c @@ -20,6 +20,10 @@ /* $Id$ */ #define NO_REGEX_EXTRA_H +#ifdef WIN32 +#include <winsock2.h> +#include <stddef.h> +#endif #include "zend.h" #include "php.h" @@ -235,8 +239,9 @@ static void sapi_apache_register_server_variables(zval *track_vars_array ELS_DC array_header *arr = table_elts(((request_rec *) SG(server_context))->subprocess_env); table_entry *elts = (table_entry *) arr->elts; char *script_filename=NULL; - ELS_FETCH(); - PLS_FETCH(); + // Theses are already in parameters? +// ELS_FETCH(); +// PLS_FETCH(); for (i = 0; i < arr->nelts; i++) { char *val; @@ -262,10 +267,28 @@ static void sapi_apache_register_server_variables(zval *track_vars_array ELS_DC static int php_apache_startup(sapi_module_struct *sapi_module) { +#ifdef PHP_WIN32 + // this is needed because apache reloads this dll twice due + // to a colision. A better way to do this is to define the load + // address for the dll, but am not sure what it should be. + // this is just a quick hack to get it working. + + static int php_apache_started=0; + static int apache_startup_success = FAILURE; + if (php_apache_started>0) return apache_startup_success; + php_apache_started=1; +#endif + if(php_module_startup(sapi_module) == FAILURE || zend_startup_module(&apache_module_entry) == FAILURE) { +#ifdef PHP_WIN32 + apache_startup_success = FAILURE; +#endif return FAILURE; } else { +#ifdef PHP_WIN32 + apache_startup_success = SUCCESS; +#endif return SUCCESS; } } @@ -343,8 +366,13 @@ static sapi_module_struct sapi_module = { sapi_apache_register_server_variables, /* register server variables */ php_apache_log_message, /* Log message */ +#ifdef PHP_WIN32 + NULL, + NULL, +#else block_alarms, /* Block interruptions */ unblock_alarms, /* Unblock interruptions */ +#endif STANDARD_SAPI_MODULE_PROPERTIES }; @@ -562,9 +590,9 @@ CONST_PREFIX char *php_apache_value_handler_ex(cmd_parms *cmd, HashTable *conf, php_per_dir_entry per_dir_entry; if (!apache_php_initialized) { + apache_php_initialized = 1; sapi_startup(&sapi_module); php_apache_startup(&sapi_module); - apache_php_initialized = 1; } per_dir_entry.type = mode; @@ -656,9 +684,9 @@ void php_init_handler(server_rec *s, pool *p) { register_cleanup(p, NULL, (void (*)(void *))apache_php_module_shutdown_wrapper, (void (*)(void *))php_module_shutdown_for_exec); if (!apache_php_initialized) { + apache_php_initialized = 1; sapi_startup(&sapi_module); php_apache_startup(&sapi_module); - apache_php_initialized = 1; } #if MODULE_MAGIC_NUMBER >= 19980527 { @@ -763,6 +791,33 @@ module MODULE_VAR_EXPORT php4_module = #endif }; + +#ifdef PHP_WIN32 +__declspec(dllexport) BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) +{ + switch (fdwReason) { + case DLL_PROCESS_ATTACH: + tsrm_startup(1, 1, 0); + sapi_startup(&sapi_module); + if (sapi_module.startup) { + sapi_module.startup(&sapi_module); + } + break; + case DLL_THREAD_ATTACH: + break; + case DLL_THREAD_DETACH: + ts_free_thread(); + break; + case DLL_PROCESS_DETACH: + if (sapi_module.shutdown) { + sapi_module.shutdown(&sapi_module); + } + tsrm_shutdown(); + break; + } + return TRUE; +} +#endif /* * Local variables: * tab-width: 4 diff --git a/sapi/apache/mod_php4.h b/sapi/apache/mod_php4.h index b1e8429196..c2276a1a29 100644 --- a/sapi/apache/mod_php4.h +++ b/sapi/apache/mod_php4.h @@ -36,7 +36,7 @@ typedef struct { extern zend_module_entry apache_module_entry; extern php_apache_info_struct php_apache_info; -#if MSVC5 +#ifdef WIN32 #define S_IXUSR _S_IEXEC #endif diff --git a/sapi/apache/php_apache.c b/sapi/apache/php_apache.c index d8aab5ef2d..b75f2c5f16 100644 --- a/sapi/apache/php_apache.c +++ b/sapi/apache/php_apache.c @@ -21,6 +21,11 @@ #define NO_REGEX_EXTRA_H +#ifdef WIN32 +#include <winsock2.h> +#include <stddef.h> +#endif + #include "php.h" #include "ext/standard/head.h" #include "php_globals.h" @@ -39,7 +44,13 @@ #include "php_apache_http.h" #include "http_request.h" + +#ifdef PHP_WIN32 +#include "zend.h" +#include "ap_compat.h" +#else #include "build-defs.h" +#endif #define SECTION(name) PUTS("<H2>" name "</H2>\n") diff --git a/sapi/apache/sapi_apache.c b/sapi/apache/sapi_apache.c index d9fcb71722..460eabd1d1 100644 --- a/sapi/apache/sapi_apache.c +++ b/sapi/apache/sapi_apache.c @@ -22,6 +22,11 @@ /* $Id$ */ #define NO_REGEX_EXTRA_H +#ifdef WIN32 +#include <winsock2.h> +#define PHP_EXPORTS +#include <stddef.h> +#endif #include "php.h" @@ -54,6 +59,7 @@ #include "php_version.h" /*#include "mod_php4.h"*/ + PHPAPI int apache_php_module_main(request_rec *r, int fd, int display_source_mode SLS_DC) { zend_file_handle file_handle; |