Apache 2.0.54 configurieren
Messmar
- webserver
Hi,
ich muss meinen Apache-Webserver 2.054 unter WINXP für php konfigurieren.
Ich finde aber den Direktive bzw. das Teil für php in der httpd.conf nicht mehr.
Ich weiß, dass es sich dabei was geändert hat, aber ich errinere mich nicht daran. Ich habe es mal konfiguriert, aber das war lange hier.
Für jede Hilfe bin ich seht dankbar.
Gruß
Messmar
hi,
ich muss meinen Apache-Webserver 2.054 unter WINXP für php konfigurieren.
Ich finde aber den Direktive bzw. das Teil für php in der httpd.conf nicht mehr.
http://bananajoe.de/wamp2_mp.html sollte weiterhelfen können.
gruß,
wahsaga
Hi,
http://bananajoe.de/wamp2_mp.html sollte weiterhelfen können.
Vieken Dank.
Das muss reichen
Gruß
Messmar
hallo,
http://bananajoe.de/wamp2_mp.html sollte weiterhelfen können.
Vieken Dank.
Das muss reichen
Nicht wirklich. In diesem Punkt ist mein Feature-Artikel etwas genauer, wenn auch weniger umfangreich. Die darin beschriebenen Einstellungen gelten immer noch unverändert, auch wenn der Artikel für Apache 2.0.50 geschrieben wurde. Aber selbst mit Apache 2.1.9beta funktioniert die PHP-Anbindung immer noch exakt so, wie ich es beschrieben hatte.
Zu fragen wäre, ob du PHP als CGI-Anwendung laufen lassen willst, oder ob es als Modul zum Einsatz kommen soll - beides ist möglich, auch unter WindowsXP. Wenn du lediglich Standard-Einstellungen brauchst, ist unter WindowsXP außerdem eine php.ini gar nicht unbedingt erforderlich, und mit den Standardwerten kannst du auch schon sehr vieles erreichen.
Grüße aus Berlin
Christoph S.
hallo,
Zu fragen wäre, ob du PHP als CGI-Anwendung laufen lassen willst, oder ob es als Modul zum Einsatz kommen soll [...]
ich benutze es als Modul.
Es funktioniert jetzt, aberich habe ein anders Problem und zwar der PhpMyAdmin schmeißt mir die folgende Fehlermeldung:
"Die Erweiterung "mysql" kann nicht geladen werden. Bitte überprüfen Sie Ihre PHP-Konfiguration."
Nach Recherchen im Netz, sollte man folgendes in php.ini auskommentieren: ;extension=php_mysql.dll da ich php5 verwende.
Ich habe es auch getan, aber ich bekomme immer noch die gleiche Fehlermeldung.
Hat Jemand eine Idee woran es ansonst legen könnte?
Nochmal vielen Dank
Messmar
hallo,
"Die Erweiterung "mysql" kann nicht geladen werden. Bitte überprüfen Sie Ihre PHP-Konfiguration."
Vermutlich liegt es nicht an deiner Konfiguration, sondern an der vorhandenen Software. Es ist nicht so besonders zu empfehlen, mySQL unter Windows benutzen zu wollen. Hast du mySQL denn überhaupt installiert?
Nach Recherchen im Netz, sollte man folgendes in php.ini auskommentieren: ;extension=php_mysql.dll da ich php5 verwende.
Ob PHP5 oder eine frühere Version ist ziemlich wurscht. Diese Bibliothek ist jedoch lediglich dazu da, daß PHP mit mySQL zusammenarbeiten kann, sie ist jedoch selbst nicht mySQL.
Grüße aus Berlin
Christoph S.
hallo,
[...] Hast du mySQL denn überhaupt installiert? [...]
Ja, natürlich.
Gruß
Messmar
echo $begrüßung;
"Die Erweiterung "mysql" kann nicht geladen werden. Bitte überprüfen Sie Ihre PHP-Konfiguration."
Vermutlich liegt es nicht an deiner Konfiguration, sondern an der vorhandenen Software. [...] Hast du mySQL denn überhaupt installiert?
Das ist für PHP unter Windows nicht relevant. Ich vermute doch ein Konfigurationsproblem, dem man aber besser mit phpinfo() als mit phpMyAdmin auf die Schliche kommt. Messmar, bitte überprüfe die Einstellung unter extension_dir, ob diese auf das Verzeichnis verweist, in dem die php_mysql.dll liegt. Desweiteren kann es auch noch an dll-Dateien liegen (z.B. libmysql.dll), die bei PHP5 nun im Hauptverzeichnis liegen (also neben php.exe, php5apache.dll, ...). Sollten diese nicht dort liegen kopiere sie dorthin, oder ins windows/system32-Verzeichnis.
Wenn alles klappt muss phpinfo() die mysql-Extension anzeigen.
echo "$verabschiedung $name";
hallo dedlfix,
Hast du mySQL denn überhaupt installiert?
Das ist für PHP unter Windows nicht relevant.
Oh. Da bitte ich doch um Erläuterung. Ich muß allerdings zugeben, daß mich eine mySQL-Nutzung unter Windows bisher nie wirklich beschäftigt hat. Unter Linux/*BSD weiß ich relativ gut, wie es geht, unter Windows weiß ich nur ziemlich genau, wie es mit PHP gehen kann.
[...] Konfigurationsproblem, dem man aber besser mit phpinfo() als mit phpMyAdmin auf die Schliche kommt.
Das ist dann wieder richtig. phpinfo() liefert auf jeden Fall eine Auskunft, ob und wie mySQL angesprochen werden kann.
Messmar, bitte überprüfe die Einstellung unter extension_dir
In der php.ini gibt es eine Sektion "Dynamic Extensions", und dort gegebenenfalls einen Eintrag "extension=php_mysql.dll", der nun wieder nur gültig ist, wenn in der Sektion "Paths and Directories" die vorformulierte Pfadangabe 'extension_dir = "./"' auf das korrekte Verzeichnis verweist.
Desweiteren kann es auch noch an dll-Dateien liegen (z.B. libmysql.dll), die bei PHP5 nun im Hauptverzeichnis liegen (also neben php.exe, php5apache.dll, ...). Sollten diese nicht dort liegen kopiere sie dorthin, oder ins windows/system32-Verzeichnis.
Das ist abhängig davon, ob PHP als Modul oder in der CGI-Variante (die zwar ausdrücklich nicht für mySQL angelegt ist, und für die das MSI-Installerpaket die Bibliotheken auch nicht mitliefert, mit der es aber bei etwas Trickserei trotzdem geht) gefahren werden soll. Für die Modulvariante ist eine php.exe zum Beispiel nicht nötig - und btw heißt die DLL, di dann als Modul fungiert, "php5apache2.dll". Die kann an drei verschiedenen Orten liegen, bei mir liegt sie im "modules"-Verzeichnis des Apache selbst. %windir%/system32 halte ich (obwohl so empfohlen) nicht für einen geeigneten Ort.
Im übrigen: wenn man PHP als Modul fahren will, gibt es in dem dafür zwingend benötigten ZIP-Archiv (ohne dieses ZIP gibts keine DLLs und keine php.ini) auch eine kleine Datei "install.txt". Die sollte man schon lesen ...
Wenn alles klappt muss phpinfo() die mysql-Extension anzeigen.
Richtig, das ist die finale Bestätigung der Funktionalität.
Grüße aus Berlin
Christoph S.
echo $begrüßung;
Hast du mySQL denn überhaupt installiert?
Das ist für PHP unter Windows nicht relevant.
Oh. Da bitte ich doch um Erläuterung.
Die Client-API wird in bereits kompilierter Form mitgeliefert (libmysql.dll/libmysqli.dll) oder ist fester PHP-Bestandteil (bei PHP4). Mehr braucht man nicht, um einen vorhandenen MySQL-Server anzusprechen. (Vielleicht brauchts noch eine der anderen mitgelieferten dll-Dateien (die Extensions aus dem ext-Verzeichnis mal außen vor gelassen) die sollten aber zusammen mit der libmysql(i).dll wie folgt platziert werden.)
Desweiteren kann es auch noch an dll-Dateien liegen (z.B. libmysql.dll), die bei PHP5 nun im Hauptverzeichnis liegen (also neben php.exe, php5apache.dll, ...). Sollten diese nicht dort liegen kopiere sie dorthin, oder ins windows/system32-Verzeichnis.
Das ist abhängig davon, ob PHP als Modul oder in der CGI-Variante [...] gefahren werden soll. Für die Modulvariante ist eine php.exe zum Beispiel nicht nötig -
So wollte ich das eigentlich verstanden wissen. Je nachdem was vom Apachen (oder auch dem IIS) aufgerufen wird sollten sich die anderen dlls im eben diesem Verzeichnis oder in einem anderen über den PATH erreichbaren Verzeichnis befinden. Das system32-Verzeichnis zuzumüllen gefällt mir auch nicht, damit sollte es aber immer klappen, weil es entweder im PATH steht oder wegen überhaupt und sowieso (-:
und btw heißt die DLL, die dann als Modul fungiert, "php5apache2.dll".
Hmmm, so hatte ich das eigentlich tippen wollen.
echo "$verabschiedung $name";
Hallo,
und jetzt bekomme ich sogar beim neu straten des Apache-Servers folgends:
"PHP Startup: Unable to load dynamic library'C\php\ext\php_mysql.dll' - Das angegebene Modul wurde nicht gefunden."
Aber das Modul bzw. DLL ist da vorhanden.
Ich verstehe es überhaupt nicht.
Grüße
Messmar
hi,
"Unable to load dynamic library'C\php\ext\php_mysql.dll'
Schau dir mal genau an, was da für ein Pfad verlangt wird - "C\php" funktioniert nun einmal nicht, es sollte doch wohl "C:\php" heißen, oder? Jetzt mußt du nur noch nachschauen, wo dieser verkehrte Pfad eingetragen ist und das korrigieren.
Grüße aus Berlin
Christoph S.
Hi,
[...]Jetzt mußt du nur noch nachschauen, wo dieser verkehrte Pfad eingetragen ist und das korrigieren.
Sorry, das ist ein Tip-Fehler von mir. Da der Text sich nicht kopieren ließ (Alert-Popup), habe ich ihn einfach dann getippt.
Der Pfad in die php.ini stimmt und wie du es auch meinst:
"C:\php\ext" und nicht "C\php\ext"
Sorry ;-(
Gruß
Messmar
echo $begrüßung;
und jetzt bekomme ich sogar beim neu straten des Apache-Servers folgends:
"PHP Startup: Unable to load dynamic library'C\php\ext\php_mysql.dll' - Das angegebene Modul wurde nicht gefunden."
Aber das Modul bzw. DLL ist da vorhanden.
Ich verstehe es überhaupt nicht.
Ja, die Meldung ist auch missverständlich. Die php_mysql.dll wird zwar trotz anderslautender Meldung gefunden, diese ist jedoch auf die php5ts.dll und libmysql.dll angewiesen. Während es bei der CGI-Version im IIS ausreicht (CGI mit Apache hab ich nicht getestet), diese libmysql.dll in das Verzeichnis der aufgerufenen php-cgi.exe zu kopieren bzw. dort zu belassen, wird sie im bin-Verzeichnis vom Apachen oder im system32-Verzeichnis gefunden. Die php5ts.dll kann aber im php-Verzeichnis (da wo die php5apache2.dll aufgerufen wird) liegen bleiben. Man kann auch den Path anpassen, zu finden unter Systemsteuerung -> System --> Erweitert -> Umgebungsvariablen. Dort wäre das PHP-Verzeichnis (da wo die libmysql.dll liegt) hinzuzufügen.
echo "$verabschiedung $name";
hallo dedlfix,
Ja, die Meldung ist auch missverständlich. Die php_mysql.dll wird zwar trotz anderslautender Meldung gefunden, diese ist jedoch auf die php5ts.dll und libmysql.dll angewiesen.
Nicht nur das. Es muß eben auch dafür gesorgt werden, daß das Verzeichis (in diesem Fall C:\php\ext) über den $PATH erreichbar ist.
Man kann auch den Path anpassen, zu finden unter Systemsteuerung -> System --> Erweitert -> Umgebungsvariablen. Dort wäre das PHP-Verzeichnis (da wo die libmysql.dll liegt) hinzuzufügen.
Das ist wohl eher der "Königsweg". Ich habs eben mal schnell durchgespielt, jetzt habe ich folgende "Schnelleinstellungen":
1. in der httpd.conf:
<IfModule mod_php5.c>
PHPINIDir "D:/Apache/conf"
</IfModule>
Achtung! es darf nur _einmal_ so eine Eintragung geben, wahlweise in der httpd.conf oder innerhalb eines virtualhost-Containers. Getrennte Angaben für unterschiedliche virtuelle Hosts sind leider nicht zulässig.
2. in der php.ini (die ich in D:\Apache\conf gelegt habe):
extension_dir = "D:/Apache/extensions"
extension=php_mysql.dll
Mehr als diese zwei Zeilen brauche ich vorläufig nicht.
3. im Verzeichnisbaum (D:/Apache/extensions):
Dort liegen die drei Bibliotheken php_mysql.dll, php_mysqli.dll und libmysql.dll. Die php5ts.dll liegt in D:\Apache\bin, und die php5apache2.dll in D:\Apache\modules. Mit dem Konsolenbefehl "set" ist D:/Apache/extensions zu $PATH hinzugefügt worden - was allerdings auch bedeutet, daß es beim nächsten reboot wieder fort ist.
Das Ergebnis ist mit php_info() abrufbar und zeigt ein paar nette Einträge. Ich werde mal schnell noch ein oder zwei Scripts mit einfachen DB-Abfragen basteln, da ich das unter Windows bisher eigentlich vermieden hatte. Sollte aber nach diesen Einstellungen problemlos funktionieren.
Grüße aus Berlin
Christoph S.
echo $begrüßung;
Nicht nur das. Es muß eben auch dafür gesorgt werden, daß das Verzeichis (in diesem Fall C:\php\ext) über den $PATH erreichbar ist.
Das ist nicht nötig, solange sich darin nur die php_*.dll-Dateien befinden, denn diese werden ja von PHP über die extension_dir-Einstellung der php.ini gefunden.
<IfModule mod_php5.c>
PHPINIDir "D:/Apache/conf"
</IfModule>Achtung! es darf nur _einmal_ so eine Eintragung geben, wahlweise in der httpd.conf oder innerhalb eines virtualhost-Containers. Getrennte Angaben für unterschiedliche virtuelle Hosts sind leider nicht zulässig.
Eigentlich logisch, denn das PHP-Modul gilt ja für alle "Teilnehmer". Sonst bräuchte man den Safe-Mode-Kopfstand nicht. Dass man es in einen virtualhost-Container schreiben darf wäre m.E. ein Fehler.
- im Verzeichnisbaum (D:/Apache/extensions):
Dort liegen die drei Bibliotheken php_mysql.dll, php_mysqli.dll und libmysql.dll. Die php5ts.dll liegt in D:\Apache\bin, und die php5apache2.dll in D:\Apache\modules.
Was sind deine Beweggründe das so aufzuteilen und nicht den ganzen PHP-Krempel in einem Verzeichnis (+ Extensions-Unterverzeichnis) zu lassen? (Für dieses Verzeichnis dann einen Path-Eintrag vornehmen und am besten dem Benutzerprofil zuordnen, unter dem der Apache laufen soll)
echo "$verabschiedung $name";
hallo,
Es muß eben auch dafür gesorgt werden, daß das Verzeichis (in diesem Fall C:\php\ext) über den $PATH erreichbar ist.
Das ist nicht nötig, solange sich darin nur die php_*.dll-Dateien befinden, denn diese werden ja von PHP über die extension_dir-Einstellung der php.ini gefunden.
Ohne $PATH-Anpassung habe ich genau denselben Fehler erhalten, daß php_mysql.dll nicht gefunden werden konnte
- im Verzeichnisbaum (D:/Apache/extensions):
Dort liegen die drei Bibliotheken php_mysql.dll, php_mysqli.dll und libmysql.dll. Die php5ts.dll liegt in D:\Apache\bin, und die php5apache2.dll in D:\Apache\modules.
Was sind deine Beweggründe das so aufzuteilen und nicht den ganzen PHP-Krempel in einem Verzeichnis (+ Extensions-Unterverzeichnis) zu lassen?
Ich hatte bisher kein gesondertes PHP-Verzeichnis nötig, da die Grundfunktionen über die php5ts.dll und die php5apache2.dll ansprechbar waren, ein Apache-Verzeichnis eh erforderlich ist, und unter Windows habe ich eben bisher nicht mehr benötigt. Wenn jetzt für mySQL tatsächlich nur drei weitere Bibliotheken dazukommen, sehe ich noch kein Bedürfnis, dafür ein eigenes neues Verzeichnis anzulegen. Außerdem entspricht das meinen eigenen Prinzipien, benötigte "Features" langsam und stückweise so zusammenzustellen, daß ich sicher sein kann, keine überflüssigen Bibliotheken und/oder andere Dateien, deren Arbeitsweise ich eventuell nicht genau genug kenne oder die tatsächlich überflüssig sind, mit herumzuschleppen.
Du mußt dieser Herangehensweise ja nicht folgen.
Im übrigen reichen diese "Schnelleinstellungen" tatsächlich aus, um ein kleines mySQL-basiertes Forumscript unter Windows nutzen zu können.
Grüße aus Berlin
Christoph S.
Hallo allerseits,
[...]Man kann auch den Path anpassen, zu finden unter Systemsteuerung -> System --> Erweitert -> Umgebungsvariablen. Dort wäre das PHP-Verzeichnis (da wo die libmysql.dll liegt) hinzuzufügen.
[...]
Vielen Dank für die super Hilfe.
Über Den Eintrag in die Umgebungsvariablen hat es funktioniert.
Ich habe allerdings noch einige kleine Probleme mit phpMyAdmin. Irgendwie greifen die CSS für die Schrift und das Layout gar nicht, einige Seiten werden auch nicht gefunden bzw. aufgerufen, obwohl sie da (Unter dem entsprechenden Verzeichnis) legen. Z.B. "left.php" oder die Seite für das Abfragefenster.
Irgendwas habe ich noch nicht ganz richtig. Aber ich glaube, dass das jetzt eher eine Sache des phpMyAdmin.
Es scheint aber auch zu sein, als gäbe es gar keine Datenbank, nicht mal die "mysql", die Standardmäßig immer zu finden ist.
Für einen weiteren Tipp oder Idee wäre ich sehr Dankbar.
Gruß
Messmar