In diesem Phing Artikel liefere ich eine kurze HOWTO, wie man Phing (PHing Is Not GNU make) unter Mac OS X installiert.

Phing ist ein Build Tool für PHP, welches auf Ant aufbaut. Man könnte natürlich auch Ant für die PHP Entwicklung verwenden, allerdings hätte das den Nachteil, dass Ant auf Java basiert (was bedeutet, dass Ant Java zur Ausführung benötigt und auch Erweiterungen in Java geschrieben werden müssen). In dieser Phing Installations Anleitung wird PHP verwendet, welches schon mit Mac OS X geliefert wird (es ist also nicht erforderlich MAMP oder ähnliches zu installieren!)

Normalerweise empfehle ich den Einsatz von virtuellen Instanzen (z.B. VirtualBox oder VMware) zur Bereitstellung der Services (Datenbank, Webserver, u.s.w). Oft ist es aber auch sehr hilfreich, wenn man als Entwickler oder Administrator in seiner IDE Testskripte oder andere hilfreiche Skripte ausführen kann. Dafür bietet sich dann auch sehr gut ein Phing Skript an (z.B. um Smoke-Tests* auszuführen).

Vorbereitung / Pear Installation

Vorbereitunsarbeiten und PEAR Installation durchführen. Unter Mac OS X Lion ist PEAR standardmäßig nicht installiert. Allerdings ist der Einsatz schon vorbereitet und wird durch folgendes Kommando durchgeführt:

sudo php /usr/lib/php/install-pear-nozlib.phar
Created directory: /var/db/net-snmp
Created directory: /var/db/net-snmp/mib_indexes
[PEAR] Archive_Tar    - installed: 1.3.7
[PEAR] Console_Getopt - installed: 1.3.0
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util       - installed: 1.2.1
[PEAR] PEAR           - installed: 1.9.4
Wrote PEAR system config file at: /private/etc/pear.conf

pear ist nun einsatzbereit im Verzeichnis /usr/lib/php/pear installiert. Anschließend kann man noch den include_path von PHP anpassen, wenn man die PEAR Klassen systemweit nutzen will. Dazu kopiert man die Datei /private/etc/php.ini.default nach /private/etc/php.ini (nur, wenn vorher noch keine /private/etc/php.ini vorhanden war). In der Datei /private/etc/php.ini ersetzt man:

;include_path = ".:/php/includes"

mit

include_path = ".:/usr/lib/php/pear"

Aus Vollständigkeitsgründen hier noch eine Info zu den unterschiedlichen Stabilitäts-Branches der PEAR Pakete. Nach der Installation ist PEAR so vorkonfiguriert, dass stabile Pakete installiert werden. Man kann mit folgenden Befehl festlegen, welcher Branch verwendet werden soll:

pear config-set preferred_state stable # oder beta, alpha, devel

Die aktuelle Einstellung erhält man mit:

pear config-get preferred_state

Es empfiehlt sich allerdings die Grundeinstellung auf “stable” zu belassen, vor allem wenn es um den Einsatz in Produktivumgebungen geht. Einzelne Pakete kann man mit dem Suffix -beta, -alpha oder -devel aus einem anderen Branch installieren - oder man gibt den Channel an (dieser wird vorgeschlagen, wenn ein Paket nicht im aktuellen Branch vorliegt).

Installation Phing / PHPUnit

Zunächst werden die Quellen gesetzt, von denen die Paket bezogen werden:

sudo pear channel-discover pear.phpunit.de
sudo pear channel-discover components.ez.no
sudo pear channel-discover pear.symfony-project.com
sudo pear channel-discover pear.phing.info

Nun wird Phing und PHPUnit mit dem Pear Installer installiert:

sudo pear install --alldeps phpunit/PHPUnit
sudo pear install phing/phing
sudo pear install VersionControl_SVN-alpha # nur notwendig, falls Subversion Unterstützung benötigt wird
sudo pear install VersionControl_Git-alpha # nur notwendig, falls Git Unterstützung benötigt wird
sudo pear install phing/phingdocs # nur notwendig, falls Dokumentation auch installiert werden soll

Will man herausfinden, welche Paket installiert sind, verwendet man:

pear list
Installed packages, channel pear.php.net:
=========================================
Package            Version State
Archive_Tar        1.3.7   stable
Console_Getopt     1.3.0   stable
PEAR               1.9.4   stable
Structures_Graph   1.0.4   stable
VersionControl_Git 0.4.4   alpha
VersionControl_SVN 0.4.0   alpha
XML_Parser         1.3.4   stable
XML_Util           1.2.1   stable

Will man herausfinden, welche Paket es gibt, die “Archive” im Namen beinhalten, verwendet man:

sudo pear list-all | grep Archive

Sudo ist notwendig, da Pear für die verfügbaren Pakete eine Cache Datei anlegt und dazu Schreibzugriff auf /private/tmp/pear/cache benötigt wird.

pear/Archive_Tar                               1.3.9      1.3.7 Tar file management class
pear/Archive_Zip                               0.1.2            Zip file archiving management class
pear/File_Archive                              1.5.4            File_Archive will let you manipulate easily the tar, gz, tgz, bz2, tbz, zip, ar (or deb) files
pear/PHP_Archive                               0.11.4           Create and Use PHP Archive files

Alternativ kann man zum Stöbern auch auf die Webseite einen Katalog mit den verfügbaren Paketen einsehen: http://pear.php.net/packages.php

Funktionstest

Wenn die Installation erfolgreich verlief, sollte folgender Befehl die Version von PHPUnit ausgeben:

phpunit --version
PHPUnit 3.6.10 by Sebastian Bergmann.

Und jetzt noch ein Test für Phing:

phing -version
Phing 2.4.9

PEAR Paket Aktualisierung

Will man die installierten PEAR Pakete auf den aktuellsten Stand bringen, führt man folgenden Befehl aus:

sudo pear update-channels # Channels aktualisieren
sudo pear upgrade-all

Nach der oben beschriebenen Installation ist dies nicht notwendig, da die Pakete in der aktuellsten Version installiert werden. Allerdings sollte man die installierten Pakete von Zeit zu Zeit updaten, um z.B. von neuen Funktionen oder Fehlerbereinigungen zu profitieren.

*) Ergänzung zum Smoke Test: Beim Smoke Test handelt es sich um einen einfachen Testlauf, um erste, einfache Probleme aufzudecken.

Aktualisiert: