PayPal Modul mit Oxid eFire und Mac OS X 10.8 Mountain Lion (64 Bit)

Ich habe gerade festgestellt, dass die aktuelle ZEND-Optimizer Version, die für das PayPal-Modul benötigt wird, in der Mac-Version nur als 32-Bit Variante vorliegt:

http://www.zend.com/de/products/guard/downloads

Diese ist aber mit dem aktuellen Mac OS X 10.8 nicht mehr nutzbar, da hier der Apache Server ausschließlich auf 64 Bit läuft. Es existiert unter Mac OS X 10.8 auch keine (alternative) 32-Bit Variante von Apache, die man aus Kompatibilitätsgründen aktivieren könnte.

Sobald man das PayPal Modul aktiviert, ist die gesamte Shop-Seite nicht mehr aufrufbar. Abhilfe schafft das manuelle Entfernen des “oe”-Verzeichnisses aus dem “modules”-Verzeichnis (z.B. via FTP). Danach ist der Shop wieder benutzbar.

Allerdings bleibt das Problem, dass man PayPal nicht benutzen kann.

Welche Lösungsansätze gibt es? Weiss Jemand darüber Bescheid?

  1. Gibt es eine 64-Bit-Beta Version für Mac OS X 10.8 (Darwin) 64 Bit?

  2. Gibt es ein anderes PayPal Modul, dass auch genau so gut integriert ist?

Für Ideen und Lösungsvorschläge wäre ich sehr dankbar. Ein Wechsel der Plattform weg von Mac OS X kommt technisch gesehen für mich nicht in Frage.

nur um ganz sicher zu sein:

auf dem produktiven Server läuft OS X?
Oder auf deinem lokalen Rechner als Testumgebung?

Ja klar, wir haben eine ganze Mac Mini Serverfarm und bis auf dieses Problem läuft alles eigentlich sehr gut.

Ich habe jetzt mal die Zend Enterprise Version installiert, die für Mac OS X 10.8 freigegeben ist und sich auch problemlos mit 64 Bit installieren lässt.

Im Terminal kann ich dann prüfen, dass die Extension korrekt geladen wurde.

$php -v

PHP 5.3.15 with Suhosin-Patch (cli) (built: Aug 28 2012 18:19:13)
Copyright © 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright © 1998-2012 Zend Technologies
with Zend Optimizer+ v6.0.0, Copyright © 1999-2013, by Zend Technologies

Soweit so gut. Noch sagt das Oxid-System, dass Zend nicht installiert ist.

Wenn ich dann im PHP.ini die folgende Zeile einfüge:

zend_extension=/usr/local/zend/lib/optimizerplus/php-5.3.x/ZendOptimizerPlus.so

Kommt keine Fehlermeldung mehr. Allerdings kann ich dann das Shop-Backend nicht mehr aufrufen, es kommt lediglich noch eine leere Seite. Das Frontend funktioniert. Und zwar mit einem Schlag auf ALLEN Oxid-Seiten, die wir auf dem Server hosten.

Wir benutzen die CE 4.6 und 4.7, bei Beiden dasselbe Problem.

Sobald ich die Zeile “Zend_extension…” auskommentiere, läuft wieder alles.

==========================================

Problemlösung:

Man darf nicht den “ZendOptimizerPlus.so”, sondern man muss den “ZendExtensionManager.so” einbinden, siehe Problemlösung im nächsten Post.

Moin,

meines Wissens heißt der Zend Optimizer für PHP 5.3 Zend Guard Loader für 32 und 64 bit Versionen. Auch brauchst Du die entsprechend verschlüsselte Variante des PayPal Moduls aus dem exchange.

Gruß

Ich habe jetzt das PayPal Modul zum Laufen bekommen und werde beschreiben, was man machen muss, damit das klappt. Diese Anleitung ist für Mac OS X 10.8.2 Server auf Apple Macintosh Rechnern gedacht.

Hintergrund:

Unter Mac OS 10.8 Mountain Lion Server gibt es keine 32 Bit Apache Version mehr, demzufolge auch kein 32 Bit PHP. Im Download-Bereich von ZEND gibt es unter der Rubrik ZEND-Guard Loader (Version 5.5.0 für PHP 5.3) nur eine Version für Mac OS X, die 32 Bit aber nicht 64 Bit unterstützt. Diese Version ist maximal für Mac OS X 10.6.8 geeignet. Für Linux gibt es dagegen eine Version alternativ für 32 Bit oder für 64 Bit, für den Mac leider nicht.

Im Download-Bereich von ZEND gibt es aber unter der Rubrik ZEND-Server alles, was man als Macintosh-Anwender für den 64 Bit Betrieb benötigt:

http://www.zend.com/de/products/server/downloads

Dort findet sich die Version 6.0.0 die für Mac OS X 10.8.2 Mountain Lion Server zertifiziert ist. Diese Version ist 64 Bit Clean. Es gibt eine Version für PHP 5.3 und eine Version für PHP 5.4. Wir benötigen die Version für PHP 5.3.

Installation:

Man lade sich die Zend Server (PHP 5.3) v6.0.0 als Image (.dmg) Datei. Nach der Installation vergibt man für “admin” und “developer” ein Passwort, das man sich selbst aussuchen kann. Sinnvollerweise nimmt man hierfür das Passwort, das der normale “admin” bzw. “root” Benutzer im Mac OS X bereits hat, um Verwechselungen vorzubeugen.

Sobald man angemeldet ist, wird man ersteinmal von den Menüs erschlagen, aber es ist alles halb so wild. Die Meldung, dass die Version nach 7 Tagen ausläuft, kann man getrost ignorieren, da dies Funktionen betrifft, die wir für diese Installation nicht benötigen. Es wird danach gefragt, ob man für “developer” oder für “production” optimieren möchte. Hier wählt man “production”.

Danach muss die PHP.ini angepasst werden. Hierzu fügt man am Ende der PHP.ini, die sich im Ordner /etc/ befindet, folgende Zeilen an:

[Zend]
zend_extension=/usr/local/zend/lib/ZendExtensionManager.so
zend.install_dir=/usr/local/zend
; The dir all configuration files are stored in.
zend.conf_dir=/usr/local/zend/etc
zend.ini_scandir=conf.d
zend.node_id=0
zf2_path=/usr/local/zend/share/ZendFramework2/library

Den /etc/-Ordner öffnet man, indem man im Finder Cmd-Shift-G drückt und /etc/ eingibt. Danach sieht man die PHP.ini Datei in der Liste. Diese Datei ist normalerweise schreibgeschützt. Um sie ändern zu können müssen vorher die Berechtigungen für die Datei angepasst werden. Dann kann man die mit TextEdit öffnen und bearbeiten.

Nachdem die PHP.ini erfolgreich geändert wurde, muss man noch ein paar Einstellungen im ZendServer vornehmen. Dieser befindet sich im Programme-Ordner. Es macht Sinn, den ZendServer ins Dock zu ziehen, da der später ggf. noch benötigt wird.

Im ZendServer geht man dann nach erfolgreicher Anmeldung als “admin” auf das Menü “configuration” und klickt alle Checkboxen an bis auf “Zend Guard Loader”. Danach klickt man oben auf den Button “Disable”. Danach muss der Server einmal neu gestartet werden. Hier ist es wichtig, nicht nur den PHP-Server sondern auch den Web-Server neu zu starten. Dazu als Erstes auf das Kreis-Pfeil-Symbol rechts neben dem Warndreieck klicken, dann im Apple Server Programm (Weltkugel) den Webserver einmal stoppen und wieder starten.

Die Konfiguration im ZendServer sollte dann ausehen wie beim pict01.

Dann noch dem tmp-Ordner leeren und prüfen, ob man alles richtig gemacht hat. Hierzu loggt man sich als admin ins Shop-Backend ein und geht unter “Sevice” auf “Systeminfo”. Ganz am Ende des PHP-Blocks sieht man den “Zend Engine 2” Block. Hier muss folgender Text stehen:

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.3.0, Copyright © 1998-2012 Zend Technologies
with Zend Extension Manager v6.0.0, Copyright © 2003-2013, by Zend Technologies
- with Zend Guard Loader v3.3, Copyright © 1998-2010, by Zend Technologies [loaded] [licensed] [enabled]
- with Zend Utils v6.0.0, Copyright © 2004-2013, by Zend Technologies [loaded] [licensed] [enabled]

Wenn lediglich die Zend-Engine und nicht der Zend Extension Manager angezeigt wird, dann hat man die PHP.ini nicht richtig ergänzt.

Wenn man plötzlich beim Aufrufen des Shop-Backends eine weiße Seite und sonst nichts mehr sieht, dann sind in der ZendServer-Konfiguration noch Optionen ausgewählt, die wir nicht benutzen wollen. Siehe pict01.

Dann installiert man das PayPal Modul, bitte die Version 2.0.4 nehmen, die Version 2.0.3 hat Fehler und steht daher unter Oxid Exchange auch nicht mehr als Download zur Verfügung.

Nach der Installation des PayPal Moduls und der “check_system_requirements.php” im Hauptverzeichnis des Shops, rufen Sie Ihren Shop mit dem Zusatz “check_system_requirements” auf, also “http://www.shop.de/check_system_requirements”. Danach sollten Sie folgende Meldung sehen können:

Teste, ob Decoder für PHP installiert ist. OK Ein passender Decoder für PHP 5.3 ist vorhanden.
Teste ob CURL installiert ist. OK
Teste ob OpenSSL installiert ist. OK
Teste ob SOAP installiert ist. OK
Glückwunsch. Die Systemvoraussetzungen sind erfüllt. Sie können das PayPal Modul installieren.

Danach können Sie die “check_system_requirements.php” wieder löschen und loggen sich im Shop-Backend ein, wo Sie das PayPal Modul aktivieren.

Das sollte dann klappen.


Hier noch ein paar Tipps zur Fehlersuche, falls es doch nicht geklappt hat:

  1. Wenn Sie eine seitenfüllende ZEND-Fehlermeldung sehen, dann ist der ZEND-Server nicht richtig installiert bzw. die PHP.ini nicht richtig angepasst worden. Um den Shop bei einer seitenfüllenden ZEND-Fehlermeldung wieder benutzen zu können, müssen Sie den Ordner “oe” aus dem Module-Ordner entfernen (z.B. via FTP).

  2. Wenn Sie einen weißen Bildschirm sehen, ist die Konfiguration im ZEND-Server nicht wie im Screenshot angezeigt vorgenommen worden. Das mit dem weißen Bildschirm passiert auch, wenn man versucht, den “ZendOptimizerPlus.so” anstelle des “ZendExtensionManager.so” einbinden zu wollen. Das ist in einigen Foren leider falsch beschrieben. Stellen Sie sicher, dass Ihre PHP.ini nur die oben angegebenen ZEND-Befehlszeilen enthält und nicht irgendwelche “Versuche”, die woanders beschrieben wurden. Das mit dem weißen Bildschirm ist übrigens kein Macintosh-Problem, sondern tritt auh bei Linux exakt genau so auf, also Vorsicht.

  3. Wenn Sie nicht die seitenfüllende ZEND-Fehlermeldung sehen, sondern eine kleine Fehlermeldung mit dem Text:

Fatal error: Incompatible file format: The encoded file has format major ID 3, whereas the Loader expects 4 in/Library/Server/Web/Data/Sites/Oxid_Shop/modules/oe/oepaypal/core/oepaypalevents.php on line 0

Dann haben Sie das PayPal Modul in der Version 2.0.3 versucht zu installieren oder aber das PayPal Modul in der PHP 5.2-Variante installiert. Hier müssen Sie dann das PayPal Modul neu downloaden und die Installation des PayPal Moduls (z.B. via FTP) wiederholen.

Vielen Dank j.s.com!

Hier Quick-and-dirty für den reinen ZendGuardLoader.so .

  • ZendServer-6.0.1-php-5.3.21.dmg laden und mounten
  • Zender\ Server.pkg in ein Verzeichnis kopieren, z.B. “Neuer Ordner” in Downloads
  • cd Downloads/Neuer\ Ordner/
  • xar -xf Zend\ Server.pkg
  • cd ZendServer.pkg/
  • mv Payload Payload.tar.gz
  • tar -xf Payload.tar.gz
  • cp ./usr/local/zend/lib/loader/php-5.3.x/ZendGuardLoader.so ~/

Danach wie gehabt einbinden.
Zum Bleistift:

[Zend]
zend_extension=/usr/lib/php/extensions/no-debug-non-zts-20090626/ioncube_loader_dar_5.3.so
zend_extension="/usr/lib/php/extensions/no-debug-non-zts-20090626/ZendGuardLoader.so"
zend_loader.enable=1
zend_loader.disable_licensing=1

Sollte dies aus lizenzrechtlichen Gründen nicht erlaubt sein, dann bitte löschen oder entschärfen.

:slight_smile: