GD Bibliothek installieren
Alex
- php
Hallo Ihr
Ich möchte auf meinem lokalen Server (Xitami v2.4d9) die GD Bibliothek laufen lassen.
Eigentlich kann das nicht so schwer sein, weil ich PHP 4.3.1 habe und angeblich muss ich aus der php.ini lediglich die Zeilen
extension=php_gd.dll
extension=php_gd2.dll
auskommentieren.
Leider hat das lediglich die Folge, dass der Fehler:
'Unable to load dynamic library './php_gd.dll'- Das angegebene Modul wurde nicht gefunden
ausgegeben wird.
Das passiert auch nach einem Neustart des Servers.
In der ini.Zeile extension_dir = ./ steht kein Ordner angegeben und ich kann auf meiner Festplatte auch keinen Ordner mit Namen 'extension(s)' finden, den ich irgendwie mit php oder xitami in Verbindung bringen könnte, ebensowenig wie eine php_gd(2).dll.
Bevor ich mir jetzt irgendwas runterlade, wüsste ich gerne, WAS genau und wie ich dann weitermache. Überall steht schließlich, mit php > 4.3.0 solle man eben NICHTS herunterladen, sondern die Zeilen auskommentieren usw.
Kann mir jemand von den Cracks mal weiterhelfen?
Was php.net dazu schreibt ist mir irgendwie zu kryptisch und es mangelt mir an verständlichen Anleitungen, die genau auf meine Situation passen. In irgendwelchen Foren schreiben Leute bloß ein paar Zeichen in ihre .ini und dann läufts - wieso nicht bei mir?
Vielen vielen Dank
Alex
Nachtrag: Das Ganze findet auf einem Windows XP-home System statt.
Hi Alex,
Leider hat das lediglich die Folge, dass der Fehler:
'Unable to load dynamic library './php_gd.dll'- Das angegebene Modul wurde nicht gefunden
ausgegeben wird.
Probier es mal so:
; extension=php_gd.dll
extension=php_gd2.dll
Ich meine eigentlich, dass php_gd2.dll ausreichen müsste... Probiers einfach mal aus und sag, ob dann immer noch eine Fehlermeldung kommt oder nicht - wenn nicht dann schreibe dir mal ein PHP Script mit dem du die GD Funktionen testest.
In der ini.Zeile extension_dir = ./ steht kein Ordner angegeben und ich kann auf meiner Festplatte auch keinen Ordner mit Namen 'extension(s)' finden, den ich irgendwie mit php oder xitami in Verbindung bringen könnte, ebensowenig wie eine php_gd(2).dll.
Achso, auch eine php_gd2.dll findest du nicht? Dann kann das oben nicht klappen, dann musst du dir erst mal noch die php_gd2.dll besorgen - guck dich mal beim Hersteller um, allerdings habe ich da gerade auf die Schnelle nichts gesehen...
Laut dem PHP Manual müsstest du dir PHP neu kompilieren mit der Option --with-gd, was unter Windows aber etwas problematisch ist.
Am einfachsten wäre es wohl, wenn du dir die .dll Datei aus einem anderen Packet holst - bei XAMPP ist eine dabei. Die musst du dir dann nur noch in dein extensions Verzeichnis schieben (welches z.B. auch ext heißen könnte). Um das Verzeichnis zu finden, such doch mal nach anderen .dll Dateien, die in der php.ini geladen werden.
MfG, Dennis.
Hallo Dennis
Danke für Deine schnelle und engagierte Antwort!
Am einfachsten wäre es wohl, wenn du dir die .dll Datei aus einem anderen Packet holst - bei XAMPP ist eine dabei. Die musst du dir dann nur noch in dein extensions Verzeichnis schieben (welches z.B. auch ext heißen könnte). Um das Verzeichnis zu finden, such doch mal nach anderen .dll Dateien, die in der php.ini geladen werden.
Auf meinem Rechner ist keine einzige php_*.dll
php.ini läd keine .dlls, da sämtliche .dlls auskommentiert sind.
Wie kann das eigentlich sein - ich dachte, das ist seit PHP 4.3.0 all inclusive (?!?)
Daher kann ich auch kein Verzeichnis finden.
Bei XAMPP konnte ich keine einzelne .dll finden, muss ich dafür das Package installieren? (Das täte ich ungern)
Dann doch lieber
Laut dem PHP Manual müsstest du dir PHP neu kompilieren mit der Option --with-gd, was unter Windows aber etwas problematisch ist.
»»
Was ist daran problematisch?
Und - wieso funktioniert das bei fast allen anderen, die diese Frage posten und PHP 4.3.1 installiert haben mit ein paar Änderungen an der .ini?
(Haareraufend) Alex
Hi Alex,
Auf meinem Rechner ist keine einzige php_*.dll
php.ini läd keine .dlls, da sämtliche .dlls auskommentiert sind.
Wie kann das eigentlich sein - ich dachte, das ist seit PHP 4.3.0 all inclusive (?!?)
Hm, wo hast du PHP denn her? War das mit diesem Xitami Web Server ein Packet? Dann könnte das natürlich sein, dass das eine etwas „abgespeckte“ Version ist...
Sonst lad dir halt mal das Zip-Package von php.net direkt runter und guck dir die Inhalte mal an.
Bei XAMPP konnte ich keine einzelne .dll finden, muss ich dafür das Package installieren? (Das täte ich ungern)
Ich dachte eigentlich daran, dass du dir die .zip Datei runterlädst, dir da die .dll Datei raussuchst und die in dein vorhandenes extensions Verzeichnis schiebst - da du dieses ja allerdings gar nicht hast (was hast du eigentlich überhaupt von PHP da?), wäre es wohl das beste (bzw. würde ich an deiner Stelle machen) diese PHP Installation zu vergessen und PHP noch mal selber neu zu installieren.
Ich würde übrigens auch einen anderen Web-Server verwenden - nämlich den Apachen, aber vielleicht hast du ja gute Gründe Xitami einzusetzen...
Was ist daran problematisch?
Und - wieso funktioniert das bei fast allen anderen, die diese Frage posten und PHP 4.3.1 installiert haben mit ein paar Änderungen an der .ini?
Du brauchst einen Kompiler dafür - ich habe bisher nur gehört, dass das unter Windows halt alles nicht so glatt läuft wie unter Linux, ich habe es selber unter Windows noch nie gemacht - für Windows nehme ich immer die fertigen Binaries und würde auch jedem empfehlen das so zu tun.
MfG, Dennis.
Hi Dennis
Habe mir die .dll besorgt.
Theoretisch müsste es doch möglich sein ein extensions Verzeichnis per Hand anzulegen und die .dll dann reizuwerfen, oder?
Leider scheitert der Versuch
1. Am Unwissen, ob das überhaupt sinnvoll ist
2. Am Unwissen, welches Verzeichnis denn das Wurzelverzeichnis wäre (Zur Auswahl stünden da \PHP oder \Windows oder ???)
3. Am Unwillen meine derzeitige php Version zu deinstallieren, weil sie doch eigentlich sonst super läuft und ich den Verdacht nicht loswerde, dass ich vielleicht beim Installieren 'Minimalversion' oder sowas geklickt haben könnte...
Gibt es
1. Einen Grund warum das nicht funktionieren kann?
2. Eine Möglichkeit, das Wurzelverzeichnis aufzuspüren?
3. Eine Möglichkeit meine laufende PHP Version upzudaten?
Nochmal vielen Dank für die Hilfe
Alex
Hi Alex,
Theoretisch müsste es doch möglich sein ein extensions Verzeichnis per Hand anzulegen und die .dll dann reizuwerfen, oder?
Ja, das müsste theoretisch möglich sein.
Leider scheitert der Versuch
- Am Unwissen, ob das überhaupt sinnvoll ist
Nun, zuerst einmal musst du die php.ini gefunden haben - und zwar die _richtige_ php.ini! Bei XAMPP sind glaube ich ein paar mehr dabei, welche php.ini verwendet wird, verrät dir die Ausgabe von phpinfo() in einem PHP Script.
- Am Unwissen, welches Verzeichnis denn das Wurzelverzeichnis wäre (Zur Auswahl stünden da \PHP oder \Windows oder ???)
Du müsstest an der Stelle wohl einen absoluten Pfad angeben - das sollte so gehen: "C:/Pfad/zum/Extensions/Ordner", achte darauf, dass ich Forward-Slashs verwendet habe und keine Backslashs - mit Backslashs sollte es zwar auch gehen, aber dann müsstest du jeden Backslashs nochmal mit \ escapen, also \ schreiben.
- Am Unwillen meine derzeitige php Version zu deinstallieren, weil sie doch eigentlich sonst super läuft und ich den Verdacht nicht loswerde, dass ich vielleicht beim Installieren 'Minimalversion' oder sowas geklickt haben könnte...
Ich vermute fast, dass du XAMPP Lite genommen hast - das ist ein Minimal-Packet, was auch nicht regelmäßig upgedated wird!! Du solltest stattdessen das richtige XAMPP verwenden.
Gibt es
- Einen Grund warum das nicht funktionieren kann?
Ja.
- Eine Möglichkeit, das Wurzelverzeichnis aufzuspüren?
Das Wurzelverzeichnis ist eigentlich egal - wenn du eine relative Pfadangabe machen würdest, dann müsstest du das wissen (bzw. so ist es beim Apache, ich weiß gar nicht genau, worauf sich die PHP in dem Fall bezieht, da gibt es ja nicht wirklih einen Server-Root oder so etwas). Gib den Pfad einfach absolut an.
- Eine Möglichkeit meine laufende PHP Version upzudaten?
Nun, unter Windows ist das alles relativ problematisch - wenn ich da mal was installiert habe rühre ich das erst mal nicht wider an, zumal das nur ein Test-System und kein Produktiv-System ist, auf einem Produktiv-System müssen natürlich regelmäßig Sicherheitsupdates gemacht werden, mein Test-System hat hingegen nur einen Haus-internen Netzwerk-Anschluss.
Soll heißen: Natürlich kannst du deine PHP Version updaten (ob drüberinstallieren unter Windows problemlos klappt weiß ich nicht, deinstallieren und neu installieren geht aber auf jeden Fall), aber es ist fraglich, ob du dein Problem so einfach gelöst hast - ich würde mir an deiner Stelle einfach mal die .zip Datei vom aktuellen XAMPP Packet holen.
MfG, Dennis.
Hallo Dennis
Nun, zuerst einmal musst du die php.ini gefunden haben - und zwar die _richtige_ php.ini! Bei XAMPP sind glaube ich ein paar mehr dabei, welche php.ini verwendet wird, verrät dir die Ausgabe von phpinfo() in einem PHP Script.
Ich habe die Richtige. Sobald ich in ihr etwas verändere verändert sich die Fehlermeldung in der phpinfo() entsprechend
Du müsstest an der Stelle wohl einen absoluten Pfad angeben - das sollte so gehen: "C:/Pfad/zum/Extensions/Ordner", achte darauf, dass ich Forward-Slashs verwendet habe und keine Backslashs - mit Backslashs sollte es zwar auch gehen, aber dann müsstest du jeden Backslashs nochmal mit \ escapen, also \ schreiben.
In der php.ini sind die lokalen absoluten Pfade mit unescapten Backslashes eingetragen. However - habe ein Verzeichnis 'extensions' angelegt, absoluten Pfad in allen denkbaren Kombinationen eingegeben, brandheiße php_gd2.dll reingepastet. NIX. Immer die Meldung
Unknown(): Unable to load dynamic library 'C:\PHP\extensions\php_gd2.dll' - Das angegebene Modul wurde nicht gefunden.
Je nachdem, mit Slashes, Backslashes oder escapierten Backslashes...
Ich vermute fast, dass du XAMPP Lite genommen hast - das ist ein Minimal-Packet, was auch nicht regelmäßig upgedated wird!! Du solltest stattdessen das richtige XAMPP verwenden.
Wieso kommst Du darauf, dass ich überhaupt XAMPP installiert habe?
Soviel ich weiß, hab ich die Version damals von php.net gezogen.
Ich hatte eher überlegt, den zip von boutell runterzuladen. Allerdings wird genau das von dynamicwebpages nicht empfohlen. Es heißt dort:
"Anmerkung: Seit PHP 4.3 ist eine Version der GD-Bibliothek in PHP enthalten. Diese gebündelte Version ... sollte der externen Version immer vorgezogen werden (der Code wird besser betreut und ist stabiler)."
Also ich hab PHP 4.3.1, beide php_gd.dlls sind in der php.ini (;auskommentiert) aufgeführt, dann muss die installierte Version sie doch auch kennen (und haben).
Soll heißen: Natürlich kannst du deine PHP Version updaten (ob drüberinstallieren unter Windows problemlos klappt weiß ich nicht, deinstallieren und neu installieren geht aber auf jeden Fall), aber es ist fraglich, ob du dein Problem so einfach gelöst hast - ich würde mir an deiner Stelle einfach mal die .zip Datei vom aktuellen XAMPP Packet holen.
Habe PHP nochmal 'advanced' drüberinstalliert - ohne die geringste Veränderung. Die .dll hab ich mir von php.net geholt.
XAMPP download-Dateien sind so dermaßen riesig, dass es Stunden dauert sie runterzuladen, welchen Mehrwert habe ich davon?
Ich habe doch PHP 4.3.1, die Dateien sind der .ini bekannt, wieso soll ich ein vollkommen neues PHP setup machen. Der .zip von php.net ist kleiner, die .dll ist drin...
Wenn Du sagst, es läuft, wenn ich die XAMPP Version neuinstalliere, mache ich das, aber ich wage genau das zu bezweifeln und glaube, dass es doch eher irgend ein saublöder Kleinscheiß ist, ein verflixtes Semikolon in der ini - was weiß ich.
Wieso haben andere diese Probleme nicht, die haben eine niedrigere PHP Version, machen ein Semikolon raus und GD läuft...
Sorry, bin grad etwas entnervt und ziemlich ratlos.
Auf jeden Fall trotzdem Danke und einen schönen Tag
Alex
Hi Alex,
Ich habe die Richtige. Sobald ich in ihr etwas verändere verändert sich die Fehlermeldung in der phpinfo() entsprechend
Ok, dann bist du an der richtigen Stelle.
In der php.ini sind die lokalen absoluten Pfade mit unescapten Backslashes eingetragen. However - habe ein Verzeichnis 'extensions' angelegt, absoluten Pfad in allen denkbaren Kombinationen eingegeben, brandheiße php_gd2.dll reingepastet. NIX. Immer die Meldung
Unknown(): Unable to load dynamic library 'C:\PHP\extensions\php_gd2.dll' - Das angegebene Modul wurde nicht gefunden.
Je nachdem, mit Slashes, Backslashes oder escapierten Backslashes...
Hm, das kling myteriös... Mir kommt da aber noch eine Idee - beim Apache Web Server ist es so, dass man um dynamische Extensions verwenden zu können das Modul mod_so fest einkompilieren muss.
Möglicherweise ist es bei PHP auch so - ich habe gerade mal die Configure Options angeguckt und bin auf --enable-shared gestoßen, wenn man da "no" als Wert übergibt kann es vielleicht sein, dass PHP keine dynamischen Extensions laden kann.
Da deine PHP Version sowieso sehr alt ist würde ich dir also empfehlen PHP komplett neu zu installieren - dann funktioniert es nämlich! (Zumindest bei mir, WinXP SP2, PHP 4.4.1 und 5.0.5)
Habe PHP nochmal 'advanced' drüberinstalliert - ohne die geringste Veränderung. Die .dll hab ich mir von php.net geholt.
XAMPP download-Dateien sind so dermaßen riesig, dass es Stunden dauert sie runterzuladen, welchen Mehrwert habe ich davon?
Ich habe doch PHP 4.3.1, die Dateien sind der .ini bekannt, wieso soll ich ein vollkommen neues PHP setup machen. Der .zip von php.net ist kleiner, die .dll ist drin...
Wie gesagt - PHP 4.3.1 ist mittlerweile schon _sehr_ alt, aktuell ist 4.4.2 - du solltest _dringenst_ Updaten, alleine schon aus den Sicherheitsgründen (gestopfte Löcher und gefixted Bugs).
Wenn Du sagst, es läuft, wenn ich die XAMPP Version neuinstalliere, mache ich das, aber ich wage genau das zu bezweifeln und glaube, dass es doch eher irgend ein saublöder Kleinscheiß ist, ein verflixtes Semikolon in der ini - was weiß ich.
Du musst nicht unbedingt XAMPP installieren - XAMPP ist ein Packet, welches Apache, MySQL, PHP und Perl enthält - wenn du nur PHP updaten willst, bist du bei php.net an der richtigen Stelle.
MfG, Dennis.