Probleme mit MySQL unter PHP5 auf Apache2

Münchow

Mitglied
Hallo zusammen,

ich verwende z. Zt. den Apache 1.3.34 mit PHP 5.1.2 und MySql 4.1.14 auf einem W2k3 Server.

Nun wollte ich diesem ein Update auf den Apache 2.0.55 spendieren. Aus diesem Grund habe ich auf dem gleichen Rechner parallel den Apache2 installiert. Hier habe ich anschließend die httpd.conf Datei entsprechend den Einstellungen meines laufenden Systems angepasst und ledeglich den Port von 80 auf 8080 umgelegt um so beide Server parallel betreiben zu können. Anschließend wurde noch der PHP Support in soweit verändert gegenüber dem Apache 1.x, das im Apache 2.x jetzt nicht die php5apache.dll, sondern die php5apache2.dll geladen wird.

Gebe ich nun im Browser http://ip-adresse/ ein, so erhalte ich alles vom Apache 1.x. Gebe ich stattdessen http://ip-adresse:8080/ ein, so werden die Seiten vom Apache 2.x ausgeliefert. Soweit so gut.

Rufe ich jetzt eine einfache PHP Seite auf (z. B. nur mit dem Inhalt phpinfo() ), so bekomme ich alles wunderbar zurückgeliefert, jedoch fehlen im Apache2 die beiden Einträge mysql und mysqli und wenn ich über den Apache2 eine PHP Seite öffne, die eine Datenbank anspricht erhalte ich folgende Fehlermeldung:

Fatal error: Call to undefined function mysql_connect() in Laufwerk:\Pfad\zum\Ordner\forum\db\mysql4.php on line 48

Der Fehler kann ja nun nicht in der Konfiguration liegen, noch an einer falschen Installation von PHP oder MySql, denn wenn ich über den 1.x auf all diese Daten zugreife klappt es wunderbar. Nur der 2.x behauptet fleißig weiter er hätte kein mysql bzw. mysqli. Daher nun meine Frage, wie bringe ich das dem Apache2 auf meinem Windows Rechner bei??

Grüße,
O. Muenchow
 
QUOTE (Münchow @ Do 19.1.2006, 16:12) [...]
Fatal error: Call to undefined function mysql_connect() in Laufwerk:\Pfad\zum\Ordner\forum\db\mysql4.php on line 48
[...]

Hast Du auch das entsprechende PHP Modul eingebunden (hier: mysql)?
Das muss in PHP 5 gemacht werden!



MfG Sascha Ahlers
 
Hi Sascha,

am PHP5 selber kann es nicht liegen, denn ich greife von beiden Apache auf das gleiche PHP5 Verzeichnis zu. Allerdings habe ich jetzt noch irgendwo gelesen, das sich beim Apache2 sich etwas geändert hat, bzgl. dem Auffinden der php.ini Datei. Hierfür muss jetzt wohl der Pfad PHPIniDir gesetzt werden. Das habe ich aber jetzt auch schon gemacht und die Fehlermeldung kommt noch immer.

Meine aktuelle Vermutung ist also aktuell, das der Apache2 die php.ini Datei nicht findet und deshalb auch nicht ausliest. Die Frage wäre jetzt nur, wie ich ihm sage, wo er die php.ini findet. Zuerst dachte ich ja mit dem PHPIniDir würde jetzt alles gut werden, aber der Fehler bleibt leider.
 
Hallo zusammen,

Problem gelöst!!
biggrin.gif


Das Problem trat durch zwei Fehler auf:
1. In der httpd.conf muss neben dem LoadModule und dem AddType Eintrag noch der Eintrag PHPIniDir rein.
2. Die libmysql.dll muss über die PATH-Variable gefunden werden. Dafür gibt es zwei Möglichkeiten. Entweder Dll z. B. nach C:\windows kopieren oder den Pfad zum PHP-Verzeichnis in der PATH Variable eintragen.

Um es nochmal zusammenzufassen:
CODE httpd.conf

LoadModule php5_module "Laufwerk:/Pfad/nach/php/php5apache2.dll"
AddType application/x-httpd-php .php .php3 .php4 .php5 .phtml
AddType application/x-httpd-php-source .phps

# configure the path to php.ini
PHPIniDir "Laufwerk:/Ordner/in/dem/php.ini/liegt"



CODE Windows Umgebungsvariablen

PATH=%PATH%;D:\Programme\wamp\php\

Danach klappt auch endlich der Zugriff auf MySql über PHP im Apache2
cool.gif

 
QUOTE (Münchow @ Do 19.1.2006, 17:51)[...] 1. In der httpd.conf muss neben dem LoadModule und dem AddType Eintrag noch der Eintrag PHPIniDir rein. [...]

In der Regel muss die nicht geschehen, immerhin soll die php.ini ja auch im %windir% liegen. Dies muss nur gemacht werden, wenn PHP mit einen anderen Standard-Pfad für die php.ini kompiliert wurde. Dies gilt auch für die Apache Version 1.3.x und 2.0.x, bei der noch nicht stabilen Version 2.2.x bin ich mir nicht sicher (aber es hängt prinzipell nicht alleine vom Webserver ab, außer man möchte einen anderen Pfad bzw. php.ini benutzen).

Beispiel Ausgabe der Funktion phpinfo() für Linux Debian:

CODE --with-config-file-path=/etc/php5/apache



Punkt 2 kann wohl mal auftreten, habe dieses Problem aber niemals mit dem MySQL Modul von PHP gehabt (unter keinem Windows System), höchstens mit der LDAP Erweiterung.



MfG Sascha Ahlers

PS: Welche Version verwendest Du denn genau, würde mich halt interessieren?
 
Hi Sascha,

also meine php.ini liegt NICHT im %windir%, sondern im PHP-Ordner. Der alte 1.3 hatte damit nie Probleme, weshalb es mich wundert, dass der neue die zuerst nicht fand. Aber das konnte ja mit PHPIniDir behoben werden.

Warum jetzt allerdings die Path-Variable angepasst werden musste, damit die DLLs gefunden werden kann ich dir leider auch nicht sagen. Dazu hatte ich halt nur diese Info gefunden:
Apache 2.0.x on Microsoft Windows. Danach hat's dann auch geklappt.

Du wolltest noch meine Versionen haben:
W2k3 Server Standard Edition SP1 (inkl. aller verfügbaren Fixes)
Apache/2.0.55 (Win32) PHP/5.1.2
mysqli 4.1.7
MySQL 4.1.14-nt-log

Was die Installation angeht, so habe ich von allem nur Win32 Binaries runtergeladen und nichts selber kompiliert. Bei der Konfiguration habe ich immer auf die Default .ini Dateien aufgesetzt und hier nur meinen Senf entsprechend zugegeben. Dabei aber nichts komplexes oder schwieriges eingestellt. Ledeglich das Log wird über rotatelogs gefahren und je nachdem ob die Domain mit .com oder .de aufgerufen wird, kommt eine andere Standardseite, das war's aber auch schon an 'Besonderheiten'. Bei PHP habe ich auf die recommended aufgesetzt und bei MySql war's die medium.

Falls du noch irgendwelche Infos brauchst, einfach fragen.

Grüsse,
Münchow
 
QUOTE (Münchow @ Mo 23.1.2006, 10:32)[...] Warum jetzt allerdings die Path-Variable angepasst werden musste, damit die DLLs gefunden werden kann ich dir leider auch nicht sagen. [...]

Du wolltest noch meine Versionen haben:
[...]
mysqli 4.1.7
[...]

Bei mysqli kann ich mir wohl vorstellen, dass es kopiert werden muss, aber nicht bei mysql. Doch es ist auch gut 18 Monate her, wo ich einen Apache 2 unter Windows aufgesetzt habe.



MfG Sascha Ahlers
 
Zurück
Oben