[prev in list] [next in list] [prev in thread] [next in thread]
List: php-cvs
Subject: [PHP-CVS] cvs: php4 /win32 install.txt
From: "Markus Fischer" <mfischer () guru ! josefine ! at>
Date: 2002-05-30 10:16:16
[Download RAW message or body]
mfischer Thu May 30 06:16:16 2002 EDT
Modified files:
/php4/win32 install.txt
Log:
- Give some useful updates to Win32/Apache/PHP4 installation. Also mention
strace for advanced users.
# Probably a lot of spelling/grammar errors, feel free to correct, thx.
Index: php4/win32/install.txt
diff -u php4/win32/install.txt:1.12 php4/win32/install.txt:1.13
--- php4/win32/install.txt:1.12 Tue Mar 5 01:15:54 2002
+++ php4/win32/install.txt Thu May 30 06:16:16 2002
@@ -104,6 +104,8 @@
%SYSTEMROOT% directory is typically:
c:\windows for Windows 95/98
c:\winnt or c:\winnt40 for NT/2000/XP servers
+ We will refer to %SYSTEMROOT% for both %WINDOWS% or
+ %SYSTEMROOT% throughout the text.
Edit your php.ini file:
@@ -204,25 +206,76 @@
on Windows. One is to use the CGI binary (php-cgi.exe),
the other is to use the Apache module dll. In either case
you need to stop the Apache server, and edit your
- srm.conf or httpd.conf to configure Apache to work with PHP.
+ httpd.conf or srm.conf to configure Apache to work with PHP.
+ We'll refer to either of these files with httpd.conf in the
+ text.
Although there can be a few variations of configuring PHP
under Apache, these are simple enough to be used by the
newcomer. Please consult the Apache Docs for further
configuration directives.
+
+ Installing PHP for Apache as module
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
Now that version 4.1 introduces a safer sapi module, we recommend
that you configure PHP as a module in Apache.
- To do this, you should move php4ts.dll to the windows/system (for Windows 9x/Me)
- or winnt/system32 (for Windows NT/2000/XP) directory, overwriting any
- older file. Then you should add the following three lines to your Apache
- conf file: (swap c:/php/ for your PHP install path)
+ To accomplish this, you have to load the php4apache.dll in your
+ Apache httpd.conf.
+
+ !! NOTE !!
+ Whereever you load php4apache.dll from, php4apache.dll also
+ needs the php4ts.dll also included in the PHP4 distribution.
+ php4apache.dll depends on php4ts.dll which is loaded as soon as
+ Apache loads php4apache.dll. If php4ts.dll can't be found, you
+ usually get an error like (also see the "Problems?" section at
+ the end of the file):
+
+ Cannot load c:/php/sapi/php4apache.dll into server
+
+ So where does php4ts.dll has to be to be properly loaded ?
+ php4ts.dll is searched in the following order:
+
+ 1) in the directory where apache.exe is start from
+ 2) in the directory where php4apache.dll is loaded from
+ 3) in your %SYSTEMROOT%\System32, %SYSTEMROOT%\system and
+ %SYSTEMROOT% directory.
+ Note: %SYSTEMROOT%\System32 only applies to Windows NT/2000/XP)
+ 4) in your whole %PATH%
+
+ Note: What is %SYSTEMROOT% ? Depending on your Windows
+ installation this may be for example c:\winnt or C:\windows
+
+ Usually you would just copy it over to %SYSTEMROOT%\System32.
+ But if you want to have multiple PHP installations (for
+ whatever reason) this is a bad idea. For this circumstance the
+ safest thing is to let php4ts.dll reside in the same directory
+ where php4apache.dll is loaded from (see point 2 above).
+
+
+ After you've set up the file layout properly, you're ready to
+ finally configure Apache to load the PHP4 module. Just add the
+ following lines to your httpd.conf:
LoadModule php4_module c:/php/sapi/php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php
+ Note: Especially newer versions of Apache do not need the
+ AddModule directive anymore, your milage may vary.
+
+
+ Where do I have to put the php.ini ?
+ The php.ini files is only searched in two places:
+ 1) in your Apache installation directory (e.g. c:\apache\apache)
+ 2) in your %SYSTEMROOT% directory.
+
+
+ Installing PHP for Apache as CGI binary
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
If you wish to install PHP as a CGI binary, read this first:
http://www.cert.org/advisories/CA-1996-11.html
@@ -253,9 +306,21 @@
If you wish to use this feature with the cgi binary, create a new
file, and use the show_source("path/to/original_file.php"); function.
- On Win-Apache all backslashes in a path statement such
- as: "c:\directory\file.ext", must be converted to
- forward slashes.
+
+ Forward or backslash in pathnames ?
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ On Win-Apache, path names can contain either forward- or backslashes.
+ Example:
+
+ LoadModule php4_module C:\php\sapi\php4apache.dll
+
+ works as good as
+
+ LoadModule php4_module C:/php/sapi/php4apache.dll
+
+ You even can mix the slash-style:
+
+ LoadModule php4_module C:\php/php4apache.dll
----------------------------------------------------------
@@ -585,6 +650,56 @@
Manager. If a script file does not exist then the server will return a 404 error \
instead. There is also the additional benefit that IIS will do any authentication \
required for you based on the NTLanMan permissions on your script file.
+
+
+ You have inherent problems loading the right DLL?
+ Sometimes, loading the right DLL can be a pain on Windows.
+ Advanced Windows users may use a tool called strace (named
+ after the famous Unix application) to trace file access on the
+ system (however, it only works on NT-alike Windows, read:
+ NT/2000/XP). It can be found at
+ http://razor.bindview.com/tools/desc/strace_readme.html . Read
+ the instruction there carefully!
+
+ Example scenery:
+
+ Apache/PHP4 as module. Though I've properly configured
+ php4apache.dll in httpd.conf, I always get:
+
+ Syntax error on line 1025 of c:/apache/apache/conf/httpd.conf:
+ Cannot load c:/php/php-4.2.1-win32/sapi/php4apache.dll into server
+
+ But c:/php/php-4.2.1-win32/sapi/php4apache.dll definitely
+ exists:
+
+ dir c:\php\php-4.2.1-win32\sapi\php4apache.dll
+ Directory of c:\php\php-4.2.1-win32\sapi
+ 13.05.2002 00:01 24.576 php4apache.dll
+
+ 'strace'ing the apache.exe binary revealed the following:
+ c:
+ cd \apache\apache
+ strace apache >strace.txt
+
+ Then looking into strace.txt:
+ [...]
+729 3348 3248 NtOpenSection (0xe, {24, 24, 0x40, 0, 0, "php4ts.dll"}, ... ) == \
STATUS_OBJECT_NAME_NOT_FOUND +731 3348 3248 NtQueryAttributesFile ({24, 0, 0x40, 0, \
0, "\??\c:\php\php-4.2.1-win32\sapi\php4ts.dll"}, 1234824, ... ) == \
STATUS_OBJECT_NAME_NOT_FOUND +733 3348 3248 NtQueryAttributesFile ({24, 108, 0x40, 0, \
0, "php4ts.dll"}, 1234824, ... ) == STATUS_OBJECT_NAME_NOT_FOUND +735 3348 3248 \
NtQueryAttributesFile ({24, 0, 0x40, 0, 0, "\??\C:\WINNT\System32\php4ts.dll"}, \
1234824, ... ) == STATUS_OBJECT_NAME_NOT_FOUND + [...]
+
+ This went on quiet some time for all directories in the %PATH%
+ environment variable. The solution finally was to copy
+ php4ts.dll in any of the directories searched by the System (I
+ prefered to use c:\php\php-4.2.1-win32\sapi).
+
+ Note: This does not only apply to php4ts.dll but in fact to every
+ DLL which gets loaded through PHP too. So, if you've
+ problems running your PHP CLI application because it
+ can't load a certain library but you're sure it's there,
+ try this tool.
+
Other problems
If you are still stuck, someone on the PHP installation mailing list may be
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic