Pear für XAMPP auf OS-X aktivieren

Pear ist zwar bei XAMPP mit dabei, aber, zumindest in Version „XAMPP für Mac OS X 1.0.1“, nicht funktionstüchtig. Dieser Umstand lässt sich mit folgenden Schritten beheben.

1. Im Terminal folgende Befehle ausführen

sudo /Applications/XAMPP/xamppfiles/bin/pear channel-update pear.php.net
sudo /Applications/XAMPP/xamppfiles/bin/pear install PEAR

2. In den letzten Zeile der Konfiguration /etc/php.ini

;***** Added by go-pear
include_path=".:/Applications/xampp/xamppfiles/lib/php"
;*****

gegen das hier austauschen:

include_path = ".:/Applications/XAMPP/xamppfiles/lib/php:/Applications/XAMPP/xamppfiles/lib/php/pear"

Nach einem Neustart des Apache sollte Pear nun funktionieren.

PHP debuggen – mit NetBeans, XAMPP und xdebug

Dieser Artikel zeigt, wie man einfach einen xdebug-Debugger unter XAMPP zum Laufen bekommt und diesen dann von NetBeans aus nutzen kann. Dieses Verfahren wurde unter OS-X Leopard mit XAMPP 1.0.1 für Mac OS X ausprobiert.

1. xdebug-Erweiterung in XAMPP kopieren

Wer die xdebug-Erweiterung nicht selbst kompilieren möchte, kann sie hier für OS-X Leopard (Intel) herunterladen: xdebug.so

Das xdebug.so muss in folgendes Verzeichnis kopiert werden.

/Applications/XAMPP/xamppfiles/lib/php/php-5.2.9/extensions/no-debug-non-zts-20060613

2. Die Erweiterung in etc/php.ini konfigueren

In der php.ini wird die Erweiterung konfiguriert.

zend_extension="/Applications/XAMPP/xamppfiles/lib/php/php-5.2.9/extensions/no-debug-non-zts-20060613/xdebug.so"
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=

Das wars auch schon. Apache neu starten und der Debugger sollte nun mit NetBeans funktionieren.

CakePHP-Entwicklung im Allgemeinen und speziell unter OS-X

cake2000_medGrob gesagt ist CakePHP ein MVC-Framework in PHP. Es unterstützt Validierung, Internationalisierung und bietet eine automatischer Objektserialisierung in die Datenbank. Mit CakePHP kann man Model, Controller und Views generieren backen. Besonders praktisch ist, dass man mit CakePHP die notwendigen Objekte und Seiten für ein voll funktionstüchtiges CRUD (Change Read Update Delete) inklusive Admin-Interface erstellen kann. 

Seit ich es vor einem Jahr entdeckt habe, möchte ich keine PHP-Anwendung mehr ohne CakePHP machen. CakePHP ist Open-Source, klein, klar, gut programmiert, anständig dokumentiert und relativ leicht verständlich. Es beschleunigt nicht nur die Entwicklung ungemein, sondern sorgt auch mit einem klaren Benennungs-Schema dafür, dass der Code sauber und übersichtlich bleibt. 

Installation

Zur Installation wird CakePHP lediglich entpackt und dann in den htdocs-Ordner des Webservers kopiert. In dem entpackten Ordner befindet sich eine im Finder unsichtbare .htaccess-Datei, die unbedingt mit kopiert werden muss. Falls die Startseite nach der Installation so aussieht, als hätte sie kein CSS, wurde das wahrscheinlich vergessen.

CakePHP läuft sowohl mit MAMP, als auch mit XAMMP. Alle weiteren, für die Installation notwendigen Dinge, wie Datenbank-Konfiguration und Verzeichnisberechtigungen, werden nach Aufruf der Startseite in der Installations-URL im Browser angezeigt. 

Nach der Installation sollte die Startseite so grün, wie im folgenden Screenshot aussehen.

cakephp-installation

Backen

Mit CakePHP lassen sich Model-Objekte, Controller und die CRUD-GUI-Seiten automatisch aus in der Datenbank angelegten Entities generieren. Dazu geht man mit dem Terminal in den Ordner /cake/console und kann nun die gewünschten PHP-Klassen mit

/Applications/xampp/xamppfiles/bin/php cake.php bake 

wenn man XAMPP benutzt oder 

/Applications/MAMP/bin/php5/bin/php cake.php bake

mit MAMP, generieren.

Datenbank

Datenbanktabellen sollten für CakePHP immer in der Mehrzahl benannt werden, also „users“ oder „locations“. CakePHP kann einen von der Datenbank generierten Primärschlüssel nutzen. Unter MySQL beispielsweise legt man einen auto_increment key mit

`id` int(11) NOT NULL auto_increment,

an. Wenn man dem Primärschlüssel den typ CHAR(36) gibt, generiert CakePHP beim Speichern der Objekte automatisch eine UUID als Primärschlüssel. 

Die Felder „created“ und „modified“ werden von CakePHP automatisch  mit dem Datum der Erstellung und der letzten Änderung des Datensatzes befüllt. 

`created` datetime NOT NULL,
`modified` datetime NOT NULL,

Folgende Datentypen können für das CakePHP-Model im Fall von MySQL genutzt werden:

CakePHP Datentyp MySQL Datentyp
primary_key NOT NULL auto_increment
string varchar(255)
text text
integer int(11)
float float
datetime datetime
timestamp datetime
time time
date date
binary blob
boolean tinyint(1)

Die Datentypen für weitere Datenbanken, wie PostgreSQL, DB2 oder Oracle findet man hier im Cookbook

Dokumentation

Weitere Informationen über CakePHP

Ich wünsche frohes backen!

MAMP oder XAMPP zur PHP-Entwicklung unter OS-X

mamp-gui
MAMP Gui

Als ich begann MAMP zu benutzen, vor ein paar Jahren, war es noch die einzige Möglichkeit unproblematisch einen Apache mit PHP und MySQL auf dem Mac zum Laufen zu bekommen. Inzwischen ist etwas Zeit vergangen und es gibt den aus der Windows- und Linux-Welt bekannten XAMPP als Alternative zu MAMP.

Zur Installation wird XAMPP, genauso wie MAMP einfach in den Programme-Ordner kopiert und ist dann auch sofort lauffähig. Die Komponenten von XAMPP lassen sich über das Terminal oder mit einer GUI Anwendung namens „XAMPP Controls“ starten und stoppen. Die Standardinstallation benutzt die allseits bekannten Ports 80 und 3306 für apache und MySQL, weshalb man zum Starten das Administrator-Passwort eingeben muss. MAMP hingegen lässt sich nur über die MAMP-GUI starten und stoppen, nicht über das Terminal. Die MAMP-GUI bietet verschiedene Einstellungen, wie z.B. die Ports unter denen Apache und MySQL laufen. Eine solche GUI-Konfiguration ist in den XAMPP Controls nicht enthalten, hier muss man sich mit der Konfiguration von PHP, MySQL und Apache auskennen.

XAMPP Controls
XAMPP Controls

Die Verzeichnisstruktur von XAMPP ist für jemanden, der schon mal ein bisschen auf einem Linux-Server rumgemacht hat, leicht verständlich. Alle Konfigurations-Dateien, wie my.cnf, httpd.conf und php.ini befinden sich im Ordner „etc“. Des weiteren finden wir einen „logs“-Ordner in dem die Logfiles landen und einen „htdocs“-Ordner, der als Wurzelverzeichnis für die Webserver-Dokumente dient. Bei MAMP ist die Ordner-Struktur ähnlich, sieht aber irgendwie etwas unaufgeräumter aus. In XAMPP kann man die verschiedenen Server, wie Apache, MySQL und ProFTP separat starten und beenden. In MAMP lassen sich Apache und MySQL nur gemeinsam steuern. Ein großes Manko von MAMP ist, dass man die my.cnf zur Konfiguration von MySQL vergeblich sucht.

Kann man nun eher MAMP oder XAMPP empfehlen? Ich persönlich bin von MAMP auf XAMPP umgestiegen, da es wesentlich mehr einer richtigen Server-Umgebung entspricht, umfangreichere Möglichkeiten der Konfiguration bietet und Distributionen für Linux, Windows und OS-X existieren. MAMP hingegen, das es nur für OS-X gibt, ist immer noch die bessere Wahl für Webdesigner oder Nebenbei-PHP-Programmierer die mal eben ein WordPress oder Joomla lauffähig haben wollen und Einstellungen am liebsten mit einem grafischen Benutzer-Interface machen.

Fazit: MAMP ist mehr Mac-mäßig und XAMPP besser für Profis Technikversierte wie Software-Entwickler.

Zum Ausprobieren:

Zur Webseite von MAMP

Zur Webseite von XAMPP

„RewriteEngine not allowed here“ Fehlermeldung in apache2 (XAMPP)

Wenn vom apache-Webserver der Fehler „RewriteEngine not allowed here“ kommt, kann das daran liegen, dass, wie in meiner aktuellen XAMPP-Installation unter OS-X, „AllowOverride“ in der httpd.conf  auf „AuthConfig“ oder „None“ gesetzt wurde.

„AllowOverride“ definiert, welche Einstellungen der httpd.conf in einer .htaccess überschrieben oder geändert werden dürfen. Wenn man „AllowOverride“ auf „All“ setzt, lassen sich alle gewünschten Einstellungen in der .htaccess tätigen.

Hier der Ausschnitt aus meiner httpd.conf, der das Problem behoben hat:

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride All

Siehe hierzu auch: Konfigurationsdirektive: AllowOverride