# Parser-Probleme mit PHP und Apache



## lapared (18. Oktober 2004)

Hallo zusammen!

Ich habe mir den aktuellen Apache und das PHP-zip Paket auf meinem
Rechner eingerichtet.

Dabei bin ich einer Anleitung aus meiner Schule gefolgt und es hat soweit alles bestens geklappt.

Ich kann im Browser über localhost/entwicklungsumgebung/index.html wunderbar auf die html Dateien zugreifen. Wenn ich allerdings eine PHP Datei öffne wird mir nur der PHP Quellcode angezeigt.

Ich habe hier schon im Forum, bei Google, bei Apache und bei PHP gesucht aber leider nix gefunden.

Hier mal die wichtigen Einträge aus der httpd.conf :
*ScriptAlias "c:\php4\"
AddType application/x-httpd-php4 .php4
Action application/x-httpd-php4 "c:\php4\php.exe"*

und hier die Einträge aus der php.ini:
*error_reporting = E_ALL
display_errors = on
doc_root = c:\apache\htdocs
extension_dir = c:\php4\extensions\*

Ansonsten scheint alles zu passen, nur dass mir der Parser nicht anspringt.

Über hilfe würde ich mich freuen, 
Danke schonmal im vorraus,

MfG

pared.


----------



## Backdraft (18. Oktober 2004)

lapared hat gesagt.:
			
		

> Hier mal die wichtigen Einträge aus der httpd.conf :
> *ScriptAlias "c:\php4\"
> AddType application/x-httpd-php4 .php4
> Action application/x-httpd-php4 "c:\php4\php.exe"*



Wie sehen denn die Endungen Deiner php-Dateien aus? .php oder .php4
Wenn ersteres dann änder mal die Zeile so ab:

AddType application/x-httpd-php4 .php4 .php


----------



## lapared (18. Oktober 2004)

Das 1. war der Fall...
Habs gerade ausprobiert, hat aber leider nichts gebracht...
Vielen Dank trotzdem.


----------



## Backdraft (18. Oktober 2004)

Hast Du den Apache auch neu gestartet?


----------



## lapared (18. Oktober 2004)

So, hat etwas gedauert, aber ja ich hatte ihn neu gestartet und jetzt kommt folgende Browser-Fehlermeldung:

*Bad Request
Your browser sent a request that this server could not understand.

Invalid URI in request POST /pflicht/htmldocs/test.php4 HTTP/1.1*

Komisch komisch das ganze...


----------



## Neuk (18. Oktober 2004)

Vielleicht kannst du deine test.php mal posten.


----------



## lapared (18. Oktober 2004)

also:

dei php-Datei wird von eintragen.html aufgerufen:

*eintragen.html:*

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>Pflichtübung</title>
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
<link href="../css/layout.css" type="text/css" rel="stylesheet">
<link href="../css/formulare.css" type="text/css" rel="stylesheet">
</head>

<body>
<div class="header">PHP Praxistest</div>

<div id="Content">
<h1>G&auml;stebuch</h1>

*<form method="post" action="test.php">*
<table class="infoTable" cellpadding="0" cellspacing="0" border="0" width="600">
<caption>Ins G&auml;stebuch eintragen (* = sind auszuf&uuml;llen)</caption>
<colgroup>
<col class="infoLabel" width="150">
<col class="infoData" width="450">
</colgroup>
<tbody>
  <tr>
    <td>Name *</td>
    <td><input type="text" name="Name" /></td>
  </tr>
  <tr>
   <td>Email</td>
    <td><input type="text" name="Email" /></td>
  </tr>
  <tr>
   <td>Ort</td>
    <td><input type="text" name="Ort" /></td>
  </tr>
  <tr>
   <td>Titel *</td>
    <td><input type="text" name="Titel" /></td>
  </tr>
  <tr>
    <td valign="top">Text *</td>
    <td><textarea rows="7" cols="50" name="Text" ></textarea></td>
  </tr>
</tbody>
</table>

*<div align="right"><input value="Eintragen" class="button" name="Eintragen" type="submit">*
<input value="Vorschau" class="button" name="Vorschau" type="submit"></div>
</form>
</div>
</body></html>


*test.php:*
<?php

$test = $_POST["Name"];

print $test;

?>

ich denke nicht das es daran liegt, da es auf einem anderen rechner läuft...
ich denke, dass der fehler in der httpd.conf ist...
*hier nochmal die neue Version:*
ScriptAlias /php4/ "c:\php4\"
AddType application/x-httpd-php4 .php4 .php
Action application/x-httpd-php4 "c:\php4\php.exe"


ich habe es jetzt echt schon hin und her versucht.... aber es läuft leider nicht...


----------



## lapared (18. Oktober 2004)

und wenn ich die Default .conf vom Apache nehm kommt folgender Fehler:


*Method Not Allowed
The requested method POST is not allowed for the URL /pflicht/htmldocs/test.php.*


----------



## Neurodeamon (18. Oktober 2004)

Bekommt Ihr in der Schule wirklich die Aufgabe PHP als CGI-Binary zu installieren? (*kopfschüttel*)

Der Method not allowed Fehler sollte ein Konfigurationsproblem sein. Ist es denn überhaupt möglich php-Scripte aufzurufen? Geht das klassische 'Hallo Welt' Script?


```
<?php
echo "Hallo Welt";
?>
```

Ich empfehle PHP als Modul einzubinden (php4apache.dll)


```
AddType application/x-httpd-php4 .php4
Action application/x-httpd-php4 "c:\php4\php.exe"
```

durch:


```
LoadModule php4_module c:/php4/sapi/php4apache.dll
AddModule mod_php4.c
AddType application/x-httpd-php .php
```

Die Pfade sind evtl. anzupassen - ferner braucht man natürlich auch das richtige PHP-Paket.


----------



## Fabian H (18. Oktober 2004)

Und zu dem Problem mit der CGI Version:

```
ScriptAlias /php4/ "c:\php4\"
AddType application/x-httpd-php4 .php4 .php
Action application/x-httpd-php4 "c:\php4\php.exe"
```
Soweit ich mich an Apache unter Windows erinnere, musst du das ScriptAlias auch benutzen (was in deiner httpd.conf nicht der Fall ist...).

Also so:

```
ScriptAlias /php4dir/ "C:\php4\"
Action application/x-httpd-php4 .php .php4
Action application/x-httpd-php4 "/php4dir/php.exe"
```
Du solltest aber statt _php4dir_ noch ein etwas komplizierteres Alias nehmen, da sonst schnell eine Sicherheitsluecke entsteht (http://localhost/php4dir/).


----------



## lapared (19. Oktober 2004)

Danke @ Neurodeamon,
und ja, so wurde uns das in der Schule gezeigt!?

wenn ich

*ScriptAlias /php4/ "c:/php4/"
LoadModule php4_module "c:/php4/sapi/php4apache.dll"
AddModule mod_php4.c
AddType application/x-httpd-php .php*

einbinde, sagt mir die Apache Konsole, dass er das Modul nicht finden kann...
Die Datei ist bei mir aber genau in diesem Pfad vorhanden.

Danke auch @Fabian Hoffman
mit:
*ScriptAlias /php4dir/ "c:/php4/"
AddType application/x-httpd-php4 .php
Action application/x-httpd-php4 "php4dir/php.exe"*
kommt zwar kein Fehler in der Konsole...
der Browser sagt aber weiterhin:

*Bad Request
Your browser sent a request that this server could not understand.

Invalid URI in request POST /pflicht/htmldocs/test.php HTTP/1.1*

Trotzdem danke für die Mühe...
Bin am verzweifeln...
Hat mir jemand die httpd.conf ?
tanzbar@gmx.net


----------



## lapared (19. Oktober 2004)

achso wenn ich eine seite mit einem echo reinmach kommt:

*Bad Request
Your browser sent a request that this server could not understand.

Invalid URI in request GET /pflicht/hello.php HTTP/1.1*


----------



## lapared (19. Oktober 2004)

Danke ich habs zum laufen gebracht!


Diese 3 Zeilen in LoadModule Section:
LoadModule php4_module c:/php/sapi/php4apache.dll 
AddModule mod_php4.c 
AddType application/x-httpd-php .php

Diese Zeile in die AddModule Section:
AddModule mod_php4.c 

Dann die Datei
php4ts.dll
ins Windows - System Verzeichnis kopieren, dieser Schritt fehlte mir glaub!
die php.ini muss anscheinend auch im Windows verzeichnis sein...
wusste ich allerdings nicht!

Vielleicht hilft dieser Thread ja anderen!´
Grüsse!


----------



## Neurodeamon (19. Oktober 2004)

lapared hat gesagt.:
			
		

> Dann die Datei
> php4ts.dll
> ins Windows - System Verzeichnis kopieren, dieser Schritt fehlte mir glaub!
> die php.ini muss anscheinend auch im Windows verzeichnis sein...
> wusste ich allerdings nicht!



Shit, habe vergessen das zu erwähnen. Ja, die php.ini und die php4ts.dll muss ins Windowsverzeichnis kopiert werden, sofern man nicht einen anderen Pfad erzwingt :-(


----------

