# Tutorial: Einrichten eines Apache Webservers mit PHP3/4 unter Windows9x



## Klon (28. Februar 2001)

Die Installation des Apache ist einfach und ohne weiteres auszuführen. Ladet euch die Win32 Binaries von http://www.apache.org . Installiert ihn am besten im Verzeichniss C:\Apache .

Öffnet jezt den file HTTPD.conf im Verzeichniss /conf
Sucht folgenden Zeile:

*Directory Index index.html*


Schreibt dahinter noch *index.php index.php3*

Die neue Zeile sollte dann so aussehen:

*Directory Index index.html index.php index.php3*

Damit akzeptiert der Apache jetz auch PHP Dokumente als Standartdokument.

Jezt folgende Zeilen suchen, die sind kommentiert, heist es ist ein # davor:

*AddType application/x-httpd-php3 .php3*
*AddType application/x-httpd-php3-source .phps*

Macht das #-Komentarzeichen davor weg. Das selbe macht ihr in den Zeilen wo folgendes steht:

*AddType application/x-httpd-php .php*
*AddType application/x-httpd-php-source .phps*

Jezt müßt ihr noch die PHP dokumente mit dem PHP Parser verknüpfen, fügt folgenden Eintrag hinzu:

*Action application/x-httpd-php /cgi-bin/php.exe  *


das setzt vorraus das sich die PHP Dateien im Unterverzeichnis /cgi-bin des Apache Ordners befinden, also holen wir die jetzt dahin:

Ihr braucht die Zip Files von PHP3 und PHP4, ziehen könnt ihr die bei http://www.php.net
Extrahiert zuerst die DLL's und die PHP.exe aus dem PHP3 Archiv in den /cgi-bin Ordner des Apache Verzeichnisses.
Für die Installation von MySQL wird ausserdem benötigt:
LIBMYSQL.DLL und PHP3_MYSQL.DLL die sollten aber in dem Zip enthalten sein.
Von PHP4 gibts jetzt zwei Versionen, eine für CGI, die andere für ISAPI. Ihr müßt hier die CGI Version downloaden und wie oben beschrieben alle DLL's und die EXE in das Verzeichniss /cgi-bin extrahieren, dabei wird die PHP.exe aus dem PHP3 Archiv überschrieben (daher ist die reihenfolge auch so wichtig)

Aus dem PHP4 Archiv holen wir noch die Datei PHP.ini-dis , diese bennen wir um in PHP.ini und extrahieren sie in den Windows Ordner (normal X:\WINDOWS\)

In dieser Datei gibt es nicht viel wichtiges, sucht die Zeile:
*asp_tags = Off* 

wenn ihr die auf *On* stellt werden die ASP tags <% und %> akzeptiert, normal müsstet ihr die XML-Schreibweise verwenden, zum beginnen eines PHP Scripts: <?php und ?>

Dann sucht mal noch die Einträge:
*debugger.host = localhost*
*debugger.port = 7869*
*debugger.enable = Off*

Hier muss nicht mehr getan werden als *debugger.enable* auf On zu setzen.
Alle anderen Einstellungen sollten unverändert bleiben.

Startet jetzt euren Apache, erstellt eine kleine Datei mit dem Namen index.php und schreibt rein:

<html>
<head>
<title>Erste PHP Seite</title>
</head>
<body>
<?php
echo "Das was hier steht wird angzeigt";
?>
</body>
</html>

Wenn ihr jezt im IE als URL eingebt:
http://localhost drüfte da eine weiße Seite sein auf der steht "Das was hier steht wird angzeigt".

Hoffe das war soweit nachvollziehbar und fuktioniert.

Best wishes,
Klon


----------



## Dizzybaer (1. März 2001)

Hi Klaon, vielen Dank für das tutorial, ich werde es mal befolgen und hoffentlich wird es auch bei mir funktionieren!!!

Bis denne


----------



## kab00m (2. März 2001)

*Hmmmmmmmmmmm...*

Ich würde ein scritp schreiben:
<?
phpinfo()
?>

Das gibt viel mehr aus... 
*Ätsch*


----------



## t0mcat (2. März 2001)

Hi!

Was steht denn in den Logs? Die Datei httpd.conf enthält ihre Location. Schau da mal nach und poste ggf. ein Stück daraus. Bei Windows-Installationen von Apache und/oder PHP werden oftmals bestimmte DLLs benötigt die nicht auf allen Systemen vorhanden sind.

CU, t0mcat


----------



## Dizzybaer (2. März 2001)

Die sind eigentlich aussagelos:



```
[Thu Mar 01 16:23:58 2001] [error] [client 127.0.0.1] c:/programme/apache group/apache/cgi-bin/test.php is not executable; ensure interpreted scripts have "#!" first line
[Thu Mar 01 16:23:58 2001] [error] [client 127.0.0.1] couldn't spawn child process: c:/programme/apache group/apache/cgi-bin/test.php
[Thu Mar 01 16:37:44 2001] [error] [client 127.0.0.1] (2)No such file or directory: script not found or unable to stat: c:/php/php.exe
[Thu Mar 01 16:37:50 2001] [error] [client 127.0.0.1] c:/programme/apache group/apache/cgi-bin/index.php is not executable; ensure interpreted scripts have "#!" first line
[Thu Mar 01 16:37:50 2001] [error] [client 127.0.0.1] couldn't spawn child process: c:/programme/apache group/apache/cgi-bin/index.php
[Thu Mar 01 16:44:15 2001] [error] [client 127.0.0.1] (2)No such file or directory: script not found or unable to stat: c:/programme/apache group/apache/cgi-bin/index.php
[Thu Mar 01 16:44:18 2001] [error] [client 127.0.0.1] c:/programme/apache group/apache/cgi-bin/index.php is not executable; ensure interpreted scripts have "#!" first line
[Thu Mar 01 16:44:18 2001] [error] [client 127.0.0.1] couldn't spawn child process: c:/programme/apache group/apache/cgi-bin/index.php[Fri Mar 02 18:47:38 2001] [alert] APACHE.EXE: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
[Fri Mar 02 22:28:27 2001] [alert] APACHE.EXE: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
```


----------



## Dizzybaer (2. März 2001)

zu zeile drei muss ich noch sagen, dass diese nun nicht mehr gültig ist, weil ich php verschoben habe, wie es in dem tutorial stand!


----------



## t0mcat (3. März 2001)

Da ich kein großer Experte bin, was Serverdienste unter Windows angeht, empfehle ich dir, ausgehend von den obigen Fehlermeldungen, folgendes zu tun:

1. Die Datei test.php in test.php3 oder test.php umzubenennen oder httpd.conf entsprechend anzupassen (falls noch nicht geschehen).

2. Die PHP-Datei aus dem CGI-Verzeichnis in das 'normale' Dokumentverzeichnis zu verlegen, also in "DocumentRoot" bzw. in dessen Unterverzeichnisse.

3. Aus purer Neugier php.exe in der DOS-Eingabeaufforderung ausführen und sehen, ob evtl. Fehlermeldungen kommen.

Hoffe, das bringt dich irgendwie weiter!


----------



## Dizzybaer (3. März 2001)

also, das erste habe ich schon getan und es hat keine Änderung ergeben, wie rufe ich das normale verzeichnis mit localhost auf???

Das dritte (PHP.exe) hat leider gar nichts ergeben, es wird gestartet und ist dann weg!

Bis denne
Dizzybaer


----------



## t0mcat (3. März 2001)

Hi!

Das Verzeichnis, welches in "DocumentRoot" von httpd.conf eingestellt ist, sollte mit http://localhost/ zu erreichen sein.

CU, t0mcat


----------



## Dizzybaer (3. März 2001)

jo, das klapt ja ach schon, aber leider läuft das PHp nicht!!!!

Der zeigt die Dateien nicht an sondern sagt Server Error 500

und ich solle mich doch an den Systemadministrator wenden, doch der ist ein und dieselbe person wie ich und hat leider keine Ahnung wie man dieses prob löst!

Bis denne
Dizzybaer


----------



## TNT (4. März 2001)

Ich hab auch Probleme mit dem Server. Der will bei mir die index-endung .htm nicht annehmen. Bei mir heisst das allerdings auch DirectoryIndex und nicht directory index.
Wer kann mir helfen?? (Bei php hab ichs dann erst gar nicht probiert will erst das zum laufen kriegen.


----------



## Dizzybaer (4. März 2001)

ok, ich habe mich drei tage reingehangen, kenne nun die http.conf Datei fast auswendig. 

Hier, das habe ich mal für dich rausgesucht, PS. ich beanspruche  keine Copyritght etc. weil nicht von mir ist:::

<pre>

WAMP-Installations-Anleitung  
Druckerfreundliche Version 

Diese Installationsanleitung soll helfen ein sogenanntes WAMP-System aufzusetzen.
WAMP steht für WindowsApacheMySQLPHP(3/4); es handelt sich hierbei also um eine 
Anleitung, wie man eine lauffähige PHP-Umgebung inklusive Datenbank auf einem 
Win32-Betriebssystem einrichtet.
Obwohl es definitiv zu empfehlen ist, auch seine Entwicklungsumgebung auf einem 
UNIX-System zu etablieren (da wohl die meisten Webserver, die ans Internet angebunden 
sind, auf UNIX laufen, und somit Kompatibilitätsprobleme von vornherein minimiert 
werden können), ist es doch oftmals der Fall, dass der Anwender sich nicht alleine 
deswegen von seinem Betriebssystem trennen will, und sich in ein - zugegeben für 
den Windows-Gewöhnten kryptisches - Betriebssystem einarbeiten will. Daher gibt es 
für PHP und MySQL auch Windows-Versionen, die allerdings in ihrer Leistungsfähigkeit 
denen der UNIX-Versionen oftmals weit hinterher hängen. Soweit so gut, genug der Vorrede.

Diese Anleitung bemüht sich zwar aufs ausführlichste, dem Anwender die Installation und 
Konfiguration eines WAMP-Systems so einfach wie möglich zu machen. Auf Sicherheitsaspekte 
wird hier jedoch nicht näher eingegangen. Hier empfehle ich, die jeweilige Dokumentation 
zu konsultieren. Links zu Doku's, FAQ's und den Source- bzw. Binary- Distributionen sind 
weiter unten aufgeführt. Vielen Dank an dieser Stelle auch an Thomas Schulze, der lange 
Zeit die Vorgänger-Version dieser Anleitung gewartet hat und der noch einige Tipps 
parat hatte




Vorbereitungen



Bei allen Distributionen sollte man immer darauf achten, die Windows-Version zu laden. 
Diese sind bereits kompiliert, da die meisten Windows-Benutzern nicht über die Möglichkeiten 
bzw. Fähigkeiten verfügen, die Distribution selbst zu kompilieren. Meistens ist die 
Distribution an der Endung .zip zu erkennen.
Sie können mittlerweile dank des Einsatzes von Andreas Otto und Daniel Beulhausen auch 
auf Win32-Systemen ohne eigene Kompilierkenntnisse die PHP-Modul Version benutzen. Eine 
Anleitung zu dieser Installation finden Sie in der Distribution. 
Die neueste Apache-Distribution (Momentan 1.3.12) gibt es auf http://www.apache.org/ zum 
Download.

Die neuesten PHP-Versionen (momentan 3.0.16 bzw. PHP4.0.2) gibt es immer auf 
http://www.php.net/  zum Download. Die Modulversion erhalten Sie unter 
http://www.phpwin.de/

MySQL steht seit Version 3.23.19 auch mit den Windows-Versionen unter GPL. Sie finden 
die aktuellste Version unter http://www.mysql.com . Dort unbedingt darauf achten, keine 
Distribution vor Version 3.22.30 zu laden, da diese Versionen mit einem schwerwiegendem 
GRANT-Bug behaftet sind, welcher die Sicherheit des Systems beeinträchtigen können. Wichtig 
ist dieses allerdings in erster Linie bei Systemen, die auch dritten zur Verfügung stehen, 
wovon man auf Entwicklungsstationen wie Windows nicht zwangläufig ausgehen muss 
(NT-Server einmal ausgenommen).

Hier können Sie die Version 3.23.21-beta-win direkt downloaden. (Binary)
Voraussetzung für Win95-User ist Winsock2, ohne den geht nichts! Zu finden unter: 
http://www.microsoft.com/windows95/downloads/ .

Windows NT braucht den Service Pack 2 oder neuer. Gelegentlich kommt es zu Problemen mit 
ODBC-Treibern. In diesem Falle bitte eine aktuelle Version von MS besorgen und installieren.



Apache installieren


Die gepackte Datei vom APACHE Webserver entpacken und installieren. Der Apache sollte 
standardmäßig unter c:\apache installiert werden. Apache selber gibt als Standartwert 
ein "tieferes Verzeichnis" vor, wovon ich aber abrate. Wurde der Apache erfolgreich 
installiert, findet man folgendes Verzeichnis vor:



c:\apache
bin 
cgi-bin 
conf ("Konfigurationsdateien: httpd.conf")
htdocs ("Dokumentenpfad")
icons 
logs 
modules 
src 



Nun sollten Sie die Konfigurationsdatei http.conf editieren (Sicherheitskopie nicht 
vergessen):"#" steht einem Kommentar voran.


#
# ServerType ist entweder inetd oder standalone.
# Inetd mode wird nur auf UNIX-Plattformen
# unterstützt.
#
ServerType standalone
# Hier wird der Pfad zum Apache eingetragen.
# Ist wahrscheinlich schon wie folgt gesetzt.

ServerRoot "c:/apache"
# Als ServerNamen kann man sowohl
# "localhost" als auch "127.0.0.1" eingeben.
# Ich habe die Erfahrung gemacht, dass es über
# die direkte Angabe der IP-Adresse schneller
# ist. 

ServerName 127.0.0.1
# Der DocumentRoot ist der Pfad, in dem beim
# Apache die Dokumente abgelegt werden, die später
# "webtechnisch" abrufbar sein sollen. Es empfiehlt sich
# diesen bei der Vorgabe zu belassen (htdocs).

DocumentRoot "c:/apache/htdocs"
# hier werden alle Namen von Files eingetragen,
# die als index-dateien gelten
# sollen. Dabei steht die Endung .php3 für PHP 3,
# die Endung .php für PHP 4 / Zend

DirectoryIndex index.html index.htm index.php3 index.php indx.phtml
#
# Hier wird der DocumentRoot eingetragen.
#

<Directory "c:/apache/htdocs">
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# Damit der Apache .php(3)-Dateien erkennen
# kann, müssen diese Endungen hier eingetragen
# werden. Alle unten angegebenen Endungen
# werden nun als .php3- bzw. php4 - Dateien
# behandelt.

# PHP4
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

#PHP3
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3 .phtml
AddType application/x-httpd-php3-source .phps
#
# ScriptAlias: Verzeichnis, in dem Serverskripte abgelegt
# sind.
ScriptAlias /cgi-bin/ "C:/apache/cgi-bin/"
# Der Action-Handler zeigt dem Apache, mittels
# welcher Datei PHP(3)-Dateien behandelt
# werden sollen.

#PHP4
Action application/x-httpd-php "/cgi-bin/php4.exe"

#PHP3
Action application/x-httpd-php3 "/cgi-bin/php3.exe"



Sollten Sie PHP 3 und PHP 4 parallel installieren, müssen Sie auch die php.exe jeweils 
in php3.exe bzw. php4.exe umbenennen.


PHP installieren& konfigurieren



Die PHP-Dateien unter c:\php installieren. Die Datei "php3.ini-dist" bzw. "php.ini-dist" 
nach c:\windows kopieren und dort nach "php3.ini" bzw "php.ini" umbenennen. Nun diese 
Datei z.B. mittels Notepad anpassen:


;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;

# doc_root muss auf den DocumentRoot des
# Apache's gesetzt werden.
doc_root = c:\apache\htdocs

# extension_dir wird auf das cgi-bin
# Verzeichnis des Apache gesetzt.


extension_dir = c:\apache\cgi-bin
;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;

# Entkommentieren mindestens folgender
# ".dll"'s :
extension=php3_mysql.dll


# im Abschnitt MySQL folgende Änderungen# vornehmen:

mysql.default_port = 3306;
mysql.default_host = 127.0.0.1;
mysql.default_user = root;



Ich halte es auf meinem System so, dass ich die php.ini ebenfalls im cgi-bin Verzeichnis 
ablege. Nur dran denken, diese dann auch zu editieren!
Nun noch die PHP-Dateien aus c:\php nach c:\apache\cgi-bin kopieren (Genaugenommen müssen 
nur die php(3/4).exe, php.ini und die erforderlichen Module/dll's hineinkopiert werden), 
und nun sollten auch alle PHP-Dateien korrekt ausgeführt werden.

Folgendes Testprogramm in den Document-Root des Apache (/htdocs) als phpinfo.php bzw. 
phpinfo().php3 ablegen:


<?php
phpinfo();
?>



Die "mächtigste" Funktion von PHP, phpinfo(), sollte nun aufgerufen werden, um zu testen, 
ob PHP funktionstüchtig ist.


MySQL installieren


Führen Sie die Standartinstallation durch (nach c:\mysql) und starten Sie den MySQL-Daemon 
(c:\mysql\bin\mysqld). Bei einigen Versionen heißt der Daemon "shareware-mysqld".Nun steht 
der Erstellung einer Datenbank nichts mehr im Weg.
Den MySQL-Daemon solltet Ihr unter Windows 95/98 in den Autostart Ordner einfügen, unter 
Windows NT als Dienst installieren.

Tipp: Nutzen Sie den in PHP realisierten PHPMyAdmin zur Administration Ihrer Datenbanken. 
Dieses ist ein einfaches und sehr komfortables Werkzeug und steht (natürlich kostenlos) 
unter http://www.phpwizard.net/phpMyAdmin/ zum Download bereit.


5. PHP Base Library



Für datenbankbasierte Anwendungen mit Session-Tracking über Cockies bzw. URL-Codierung 
sowie serverseitigem Warenkorb empfiehlt sich die PHP Base Library.Von http://phplib.netuse.de/ 
downloaden (Version 6.1), entpacken, das /php Verzeichnis z.B. nach /Apache/ verschieben und 
folgende Einstellungen in der php3.ini vornehmen:


auto_prepend_file = /Apache/php/prepend.php3
include_path = ".;/Apache/php/"



Ohne den 1. Teil der Pathangabe (.) funktioniert phpMyAdmin nicht mehr!

Anschließend sollte man eine neue Datenbank für das gewünschte projekt mit phpMyAdmin anlegen 
und das SQL-Script create_database.mysql ausführen (ich habe das aus /unsup benutzt), wozu man 
sich ebenfalls phpMyAdmin bedient.Für diese Datenbank, in der phplib die Session- und 
Userinformationen verwaltet, ist abschließend dann noch die /Apache/php/local.inc anzupassen. 
In der Klasse DB_Poe muß eingetragen werden:


class DB_Poe extends DB_Sql {
var $Host = "localhost";
var $Database = "projekt";
var $User = "root";
var $Password = "";
}



Sinnvollerweise verwendet man hier gleich einen anderen User als root. Zum Testen das 
mitgelieferte /pages/ Verzeichnis samt Inhalt nach /Apache/htdocs/ kopieren und im Browser 
aufrufen ...
Zur PHP Base Library gibt es hervorragende Dokumentationen:
http://www.koehntopp.de/kris/artikel/phplib-deutsch/  von Kristian Köhntopp selber. Weitere 
Links finden Sie weiter unten. 


Weiterführende Links



Apache:


- http://www.apache.org  ("Download the latest", FAQ...)
- http://www.apacheweek.com  (Lesen Sie mehr dazu ...)

PHP:


-  http://www.php.net  ("Download the latest")
-  http://www.phpwizard.net/phpMyAdmin/ 
-  http://www.koehntopp.de/php/ (FAQ)
-  http://phplib.netuse.de/ (PHP Base Library)

MySQL:


-  http://www.tcx.se  (Download)
-  http://www.mysql.com  (Download)
-  http://www.little-idiot.de/mysql/ (dt. Dokumentation)

PHP Base Lib


-  http://phplib.netuse.de/ (Download)
-  http://www.koehntopp.de/kris/artikel/phplib-deutsch/ (Doku)
-  http://www.bigwig.net/phplib/ (Adventures with PHPLib)
</pre>


----------



## TNT (4. März 2001)

Wow da hast du dich aber echt reingehängt glaub ich. Die anfänglichen Schwierigkeiten mit den Dateinamen sind schon beseitigt allerdings will php noch nicht so ganz. Ich werd mich da wohl auch mal durchfressen müssen. Danke nochmal!!!!
Greetings TNT


----------



## TNT (4. März 2001)

So bei mir geht jetzt php4. Aber wieso brauch ich dann eigentl. php3???? Das versteh ich noch nicht so ganz. Greetings TNT


----------



## Dizzybaer (4. März 2001)

Wenn du php 4 Dateien hast, haben diese die Endung PHP, wenn du PHP3 Dateien hast, haben diese die Endung PHP3. Um beides interpretieren zu können, musst du also beide angeben!


----------



## Pencil (9. Mai 2002)

*mist*

ich starte apache

erstelle eine index

habe vorher alles in die httpd.conf eingetragen und schreibe

das in meine index.htm

<html> 
<head> 
<title>Erste PHP Seite</title> 
</head> 
<body> 
<? 
phpinfo() 
?> 

</body> 
</html> 


aber es funzt nichts;(( 

ich habe im IE nur ein weißes Fenster vor mir..

kann mir jemand helfen?

was habe ich falsch gemacht

habe zuerst  php3 und dann php4 wie angegeben in cgi-bin

kopiert 

hope you help

;-)


----------



## Dunsti (11. Mai 2002)

> das in meine index.htm ...



nenn die einfach mal um in "index.php"

und denk dran: Du musst den Apache am laufen haben, und die Datei über "http://localhost/..." aufrufen !!!


hope that helpz

Dunsti


----------



## Pencil (11. Mai 2002)

*sry* sie hiess schon index.php..

und apache lief auch

;(( ;(( 

hope you help

;-)


----------



## Dunsti (11. Mai 2002)

schreib ma statt dem 

<?
phpinfo()
?>

einfach 

<?
echo "test";
?>

bekommst Du dann ne Ausgabe?



Dunsti


----------



## brÅinstorm (12. Mai 2002)

müsste es nicht sowieso folgend lauten?


```
<? 
phpinfo(); #! ; #!
?>
```


----------



## Dunsti (12. Mai 2002)

normalerweise muss nach *jedem* PHP-Befehl ein Semikolon, da hast Du recht.
Ich bin mir aber nicht ganz sicher, ob es bei nur einem einzigen Befehl auch hin muss.
Wäre das Semikolon das Problem, dann käme statt dem weißen Bildschirm ein Parse-Error 

http://www.dunsti.de/test.php  <-- *ohne* Semikolon nach phpinfo !!!

Dunsti


----------



## brÅinstorm (12. Mai 2002)

ich habe mich geirrt, das letzte semikolon darf "fehlen":



> *aus Jörg Krause, "PHP4: Die Referenz" (S.84)*
> 
> _Jede Anweisung in PHP endet mit einem Semikolon *oder dem Ende des PHP-Tags*_


----------

