| Die PHP-Funktion get_loaded_extensions() zeigt alle geladenen Module an. | Die PHP-Funktion get_extension_funcs() zeigt alle Befehle eines einzelnen Moduls (hier standard) an. |
PHP-Umgebung
|
Test von PHP, der Konfiguration und der Umgebung |
|
Live- |
Alle geladenen PHP-Module |
|
Live- |
Alle Funktionen eines Moduls |
|
Live- |
Alle geladenen PHP-Funktionen |
| phpinfo | Auskunft über installierte PHP-Module mit phpinfo(INFO_MODULES) |
| Auskunft | Feststellung, welche Module geladen sind - Laden zur Ausführungszeit |
| DL | Funktion dl zum dynamischen Laden von Modulen |
| Modul-Einbau | Der Einbau eines neuen PHP-Moduls |
| Modul compilieren | Herstellung eines PHP Moduls aus dem C++ Quelltext (Source) |
| Eigene Module | Programmierung mit C++ |
| Libraries | Alternative zu Modulen, zahlreich (kostenlos) verfügbar |
Live-Daten von get_loaded_extensions() & get_extension_funcs(standard) |
|
| Klicken sie auf ein Modul, um dessen Funktionen anzuzeigen ! | |
Live-Index der verfügbaren PHP-Funktionen |
|
|
Ausgewähltes Modul:
standard
Klicken sie auf eine Funktion, um alle Funktionen dieses Moduls im Rahmen oben anzuzeigen. Fast alle Module definieren auch einige globale Konstanten. Die Namen dieser Konstanten orientieren sich meist an den Modul-Namen. Eine komplette Live-Liste aller globalen PHP-Konstanten bietet die Seite → Globale PHP-Arrays und Konstanten. |
|
phpinfo(INFO_MODULES) |
|
| Die PHP-Funktion phpinfo(INFO_MODULES) liefert eine komplette Webseite mit Informationen über geladene Module. | Öffnen sie hier die phpinfo-Seite. |
|
▶
Der Pfad zu den PHP-Erweiterungs-Modulen ist in der
Variablen extension_dir der
Konfigurationsdatei
php.ini festgelegt.
Den aktuell verwendeten Pfad erhalten sie mit Funktion
get_cfg_var. Auf Linux ist der Standard-Pfad meistens /usr/lib/php/extensions
auf Windows je nach dem Ort der Installation von PHP, z.B.
C:\Programme\PHP\ext
▶
PHP-Module tragen auf Linux Datei-Namen
wie gd.so, mysql.so, auf Windows
php_gd2.dll, php_mysql.dll usw. |
Live-
get_cfg_var('extension_dir') =
; extension_dir = "ext"
In diesem Fall wird die leider nicht dokumentierte Standard-(default)-Einstellung
verwendet, in welcher die PHP-Module hier gesucht werden:
C:\php5\php_*.dll
♣ Tipp: Aktivieren sie die Zeile
durch Entfernen des ;
Kommentar-Zeichens oder fügen sie eine neue Zeile mit Angabe des
Modul-Verzeichnisses ein.
|
| ▶ Zusätzliche Module (nur solche aus der gleichen PHP-Version !) kopieren sie in das bezeichnete Verzeichnis. Danach müssen sie das Modul in der Konfigurationsdatei php.ini bekanntgeben und PHP (d.h. den Webserver) neu starten. Das 'neue' Modul sollte sich auf der Seite phpinfo(INFO_MODULES) melden. |
▶
Selten benötigte Module können auch live (dynamisch, zur
PHP-Ausführungszeit) geladen werden. So bleibt PHP schlank und schnell,
bietet jedoch einen großen Funktions-Umfang. ♦ Details auf dieser Seite ↓ im Kapitel 'Modul-Einbau'. |
Feststellung der verfügbaren Module & Funktionen |
|
Alle geladenen Module:Das → Array $module erhält die Werte aller geladenen Module.Es wird sortiert und seine Elemente angezeigt. Klicken sie ein Modul der Liste, um dessen Befehle anzuzeigen. |
Ausgabe einer Liste aller geladenen PHP-Module:
$module = get_loaded_extensions();
sort($module); while(list($nr, $val) = each($module)) { print "$nr - $val <br />"; } |
Alle Funktionen eines Moduls:Array $func erhält die Werte des Moduls standard.In der while-Schleife werden die Befehle angezeigt. Die Live- |
Ausgabe einer Liste aller Funktionen eines geladenen PHP-Moduls:
$modul = "standard";
$func = get_extension_funcs($modul); sort($func); while(list($nr, $val) = each($func)){ print "$nr - $val <br />";
}
|
Ein einzelnes Modul:Wenn sie nur ein einzelnes Modul überprüfen wollen, dann verwenden sie am besten die Funktion extension_loaded♣ Tipp: Verwenden sie diese Methode, um die Verfügbarkeit eines Moduls vor seiner Verwendung zu kontrollieren. Falls nicht, können sie entsprechend steuern, zumindest eine erklärende Meldung anzeigen. |
$standard_ok=0;
Live-if(extension_loaded("standard")) {$standard_ok=1;}
$standard_ok = 1
extension_loaded() = 1 |
|
Liste aller geladenen Funktionen
Diese Liste wird für den
Live-Index der geladenen
Funktionen auf dieser Seite ↑ verwendet.Die Namen der Funktionen und Module werden paarweise im Array $fa eingetragen. Zunächst wird dem → Array $ma die Liste aller geladenen Module zugewiesen. Die äußere foreach-Schleife läuft über alle Elemente $m der Modul-Liste. Für jedes Modul $m wird dem Array $mfa die Liste aller Funktionen dieses Moduls zugewiesen. Die innere Schleife läuft über alle Elemente $f der Funktionen-Liste. Für jede Funktion $f wird ein Element in das Ziel-Array $fa eingetragen. Der (eindeutige) Funktions-Name $f wird als Schlüssel (key) verwendet, der Modul-Name $m als Wert. Nach Eintragung aller Funktionen wird das Array $fa nach Schlüsseln sortiert und in der letzten Schleife ausgegeben. |
$fa = array();
$ma = get_loaded_extensions(); foreach($ma as $m) {
$mfa = @get_extension_funcs($m);
}
foreach($mfa as $f) { $fa[$f]=$m;
}
ksort($fa); foreach($fa as $f=>$m) {
print "F=$f, M=$m<br />";
}
|
Linux: PHP-Module besorgen !Linux-Distributionen enthalten normalerweise PHP. Die Installation erfolgt daher besonders einfach mit dem System-eigenen Installer (z.B. SuSE-YAST, Debian-Aptitude).Leider enthält nicht jede Distribution die volle Anzahl aller PHP-Module. In diesem Fall müssen sie evtl. später ein Modul aus dem Internet besorgen. PHP-Module älterer Versionen sind jedoch manchmal nicht mehr verfügbar. |
♣ Tipp: Besorgen sie sich auf jeden Fall die vollständige Sammlung aller PHP-Module ihrer Version, solange es diese noch gibt. Speichern sie die Module im Standard Modul-Pfad, z.B. /usr/lib/php/extensions
Die kopierten Module werden nur dann geladen, wenn sie das in der
PHP Konfiguration anordnen.
|
Dynamisches Laden von PHP-Modulen |
|
Dynamisches LadenIn manchen Fällen kann man Module zur Ausführungszeit laden.▲ Diese Funktion wird in allen neuen PHP-Versionen aus Sicherheits-Gründen stark eingeschränkt. Vermeiden sie die Verwendung, weil sonst die Portablilität ihrer PHP-Programme leidet. |
Nach dem Versuch, zusätzliche Module zur Ausführungszeit zu laden,
wird nochmals die Verfügbarkeit des gesuchten Moduls geprüft:
if(extension_loaded('standard'))
{$standard_ok=1;}
Live- |
|
Hier ist die Liste der Module, welche sich im Pfad
extension_dir der →
Konfigurationsdatei php.ini befinden. Mit Funktion dl wird versucht, diese Module zu laden. Rechts das Live-Ergebnis. |
Die cfg-Variable ist nicht definiert
|
Modul-Einbau |
|
| PHP bietet (ähnlich wie → Perl) für fast jeden Bedarf maßgeschneiderte Funktionen. Für die Einbindung eines PHP-Moduls (Sammlung von Funktionen zu einem Gebiet) bestehen 3 Möglichkeiten: |
►
Mit PHP compilierte Module sind direkt im ausführbaren
Interpreter-Programm enthalten. ► Auf Anweisung der Konfigurationsdatei werden weitere Module bei Programmstart automatisch geladen. ► Zur Ausführungszeit können weitere Module geladen werden. |
Mit PHP compilierte ModuleEin Modul kann bereits beim Compilieren von PHP (Erstellen eines ausführbaren Programms (binary) aus dem (C++)-Quelltext eingebunden werden. Es ist dann fixer Bestandteil des PHP-Interpreter-Programms.• Diese Version ladet sehr schnell und ist für eine maßgeschneiderte PHP-Version ideal geeignet. Alle gängigen Linux-Distributionen verwenden diese Methode. • Um diese Methode selbst zu verwenden, muss man das PHP-Interpreter-Programm aus dem Quellcode (frei erhältlich) selbst compilieren. Das erfordert einige Kenntnisse von C++ und ein C++ Compiler Programm (Auf Linux immer vorhanden). |
• Alle Linux-Distributionen verwenden diese Methode: Wenn ein PHP-Modul mit dem jeweiligen Installations-Werkzeug (z.B. YAST) ausgewählt wird, dann wird PHP mit diesem Modul automatisch neu compiliert. • Das funktioniert aus unbekanntem Grund nicht in jedem Fall. Abhilfe: Das gewünschte Modul muss im Standard Modul-Pfad existieren. Man fügt eine entsprechende Anweisung in die PHP-Konfiguration ein, z.B. extension=exif.so
Damit wird das Modul beim Start automatisch geladen.
|
Bei PHP-Start geladene ModuleEin Modul kann in einer externen Datei (Modul, Bibliothek) organisiert sein, welche beim Start des PHP-Programms geladen wird.• Die Namen dieser Dateien lauten *.so oder php_*.so (Linux Shared Object) bzw. php_*.dll (Windows Dynamic Link Library). • Die Dateien werden in fertig compilierten Distributionen (binaries) meist in einem eigenen Verzeichnis (ext) geliefert. Andere Module (PECL) muss man meist getrennt downloaden oder überhaupt aus anderen Quellen besorgen. • Das PECL-Archiv ist auch im Internet zugänglich - Achten sie darauf, nur Module zu verwenden, die genau zu ihrer PHP-Version passen.
Hinweis: Ende 2008 wurde das PECL-Archiv aus dem Internet genommen.
Es sollte seit Mitte 2009 wieder verfügbar sein...
|
• Diese Methode wird vorwiegend auf Windows verwendet, wo nur selten eigene PHP-Versionen compiliert werden. • Die → Konfigurationsdatei php.ini legt fest, welche Module zu laden sind, und in welchem Pfad (extension_dir) sie zu suchen sind: Sie kann mit wenig Aufwand an neue Versionen oder geänderten Bedarf angepasst werden. • Beispiel: In den meisten Distributionen sind die Module gd (→ Grafik) und mysqli ( → SQL-Datenbank-Server) nicht compiliert, sondern werden mittels Konfiguration eingebunden. |
Zur Ausführungszeit (dynamisch) geladene ModuleWenn ein Modul (im richtigen Pfad, siehe → Konfiguration) vorhanden ist, jedoch nicht geladen wurde, besteht eine (geringe) Möglichkeit, es zur Ausführungszeit zu laden:• Funktion dl bindet ein (vorhandenes) externes Modul ein. Die Variable enable_dl der → Konfiguration bestimmt, ob die Funktion dl verfügbar ist. • Vorsicht - Die Funktion dl ist in den meisten neueren PHP-Version aus Sicherheits-Gründen nicht mehr verfügbar ! |
Beispiel (Grafik-Modul gd):
if (!extension_loaded('gd')) {
dl('gd.so');
}
Hinweise:
►
Nicht alle Webserver unterstützen die Funktion dl !
► Funktion dl akzeptiert normalerweise keine absoluten Pfade, sondern nur Dateinamen, die im Pfad extension_dir der Konfiguration gesucht werden. |
|
Wenn sie ein zusätzliches PHP-Modul am eigenen Server dynamisch laden wollen,
dann müssen sie die
→
Konfigurationsdatei php.ini anpassen.
Alle Hinweise ohne Gewähr - sie führen sämtliche Änderungen
ihrer Konfiguration auf eigenes Risiko durch !
Konsultieren sie vor einer Änderung die verfügbaren Anleitungen und
Hilfe-Texte in den Downloads und im Internet !
|
► Die 'dynamische' Aktivierung erfordert 2 Voraussetzungen: Das gewünschte Modul muss (im PHP-Verzeichnis bzw. im Suchpfad für Erweiterungen extension_dir ) vorhanden sein, und in der Konfigurationsdatei aktiviert werden. |
|
Zum Dynamischen Laden muss das gewünschte Modul
zunächst einmal verfügbar sein: ► Windows-Versionen enthalten PHP-Module meist in einem eigenen Unter-Verzeichnis ext Selten verwendete Module (PECL) muss man evtl. eigens downloaden. Kopieren sie das gewünschte Modul in das PHP-Verzeichnis. ► Suchen sie für Linux in ihrern Distributions-CDs / DVDs bzw. allgemein im Internet. Falls das Modul bereits "ausgepackt" vorliegt, können sie es suchen: Der Pfad zu den Modulen ist in der → Konfigurationsdatei php.ini, Variable extension_dir festgelegt. |
►
Danach müssen sie den Ladevorgang in der
→
Konfigurationsdatei php.ini festlegen: Falls sie einen Eintrag der Form finden # extension=php_gd2.dll
dann aktivieren sie die Extension durch Löschen des Kommentarzeichens
(; oder #):
extension=php_gd2.dll
Wenn der Modul-Name fehlt, dann tragen sie eine entsprechend formulierte Zeile
im Kapitel "Dynamic Extensions" ein, z.B.
extension=php_mysqli.dll
|
|
In der Konfigurationsdatei php.ini
ist ein Pfad zum Modul-Verzeichnis festgelegt. Die Live-
get_cfg_var('extension_dir') =
|
|
PHP-Module compilieren |
|
Auf Linux ist die erste Wahl für PHP-Module die Installations-CD/DVD bzw. das Web ihres
Linux-Distributors. Wenn das gewünschte Modul dort nicht zu finden
ist, muss es aus dem frei erhältlichen C++ Quelltext hergestellt (compiliert) werden. |
Auf Windows-Systemen ist nur selten ein C++ Compiler installiert. Zusätzliche
PHP-Module laden sie daher am besten fertig aus dem
PECL-Archiv,
welches zusammen mit jeder PHP-Distribution angeboten wird.Das PECL-Archiv enthält >70 fertig compilierte Module php_*.dll ♦ Details zur Installation von PECL-Modulen auf dieser Seite. |
Werkzeug• Jede gängige Linux-Distribution verfügt über einen C++ Compiler.• Zum Compilieren von PECL/Pear Modulen benötigt man zusätzlich mindestens das Programm phpize • Auf SuSE-Linux müssen sie je nach Version evtl. die Software-Module make und php-devel installieren - Damit wird u.a. auch phpize installiert. |
Modul-Quelltext (Source)Der Quelltext aller PHP-, PECL- und Pear-Module ist im Internet kostenfrei erhältlich, am besten bei PECL.• Achten sie auf die zu ihrer PHP-Version passende Modul-Version und lesen sie unbedingt allfällige Hinweise. Im Zweifel laden sie die neueste Version, die normalerweise als komprimiertes Archiv *.tgz angeboten wird. • Speichern sie das Archiv in einem beliebigen Verzeichnis, z.B. in /home/test/phpmodul
|
DownloadWenn man die genaue Web-Adresse eines Moduls kennt, dann kann man es mit einem Konsolen-Befehl downladen:
# cd /home/test/phpmodul
Alternativ kann man das Modul-Archiv auf jedem beliebigen Weg laden und in einem
eigenen Verzeichnis des Linux-PC speichern.
# wget http://pecl.php.net/get/modulname.tgz |
AuspackenWechseln sie in das Verzeichnis mit dem Archiv und packen sie es aus:
# cd /home/test/phpmodul
Die Dateien werden normalerweise in ein Sub-Verzeichnis entpackt, z.B.
# tar -xvzf modulname.tgz /home/test/phpmodul/modulname
|
CompilierenWechseln sie in das Verzeichnis der Quelltext-Dateien.# cd /home/test/phpmodul/modulname/modversion
Dort sollten sich u.a. die Text-Dateien modulname.c, modulname.h
befinden. Lesen sie allfällige Hinweise (readme).Nun wird das Modul compiliert. Der Vorgang ist komplex und kann einige Minuten dauern. Nach jedem Befehl sollten sie den letzten davor ausgegebenen Text lesen: Hier sind Fehlermeldungen und Hinweise zur Behebung von Problemen enthalten. |
Konsolen-Befehle zum Compilieren des PHP-Moduls (ohne Gewähr !):
# phpize
Bei sauberer Installation erhalten sie eine Erfolgsmeldung:
Das fertige Modul wurde installiert.
# ./configure # make # make install |
KontrolleIm Modul-Verzeichnis sollte sich das neue Modul befinden, z.B./usr/lib/php/extensions/modulname.so
Das PHP Modul-Verzeichnis ihrer Distribution ist in der PHP Konfigurations-Datei php.ini festgelegt, z.B. in /etc/php/php.ini
|
KonfigurationNun wird die PHP-Konfiguration ergänzt.• Öffnen sie die Konfigurations-Datei php.ini, z.B /etc/php/php.ini
Manchmal ist die Konfiguration für die beiden Anwendungs-Versionen von PHP
getrennt ausgeführt. In diesem Fall ändern sie beide
Dateien, z.B.
/etc/php/apache/php.ini
•
Suchen sie das Kapitel Dynamic Extensions und tragen
sie den Datei-Namen ihres Moduls ein, z.B.
/etc/php/cli/php.ini extension=modulname.so
|
Webserver-NeustartDamit das neue Modul auch am Webserver arbeitet, muss dieser neu gestartet werden. Das erefolgt je nach linux-Distribution unterschiedlich, z.B. auf SuSE# /etc/init.d/apache2 restart
Achten sie besonders auf Fehler-Meldungen: Wenn PHP oder Webserver nicht sauber
hochfahren, dann schalten sie das Modul in der Konfiguration
php.ini wieder ab. Die weitere Vorgangsweise orientiert sich an den
Fehlermeldungen, bzw. suchen sie Hilfe im Internet.
|
CLI-Kontrolle• Die Commandline-Version von PHP ist sofort betriebsbereit. Öffnen sie eine Shell-Konsole und befehlen sie (ohne/mit seitenweiser Ausgabe)
# php -r "phpinfo();"
Das neu installierte Modul wird ausgewiesen.
# php -r "phpinfo();" | more |
Verwendung in PHP Programmen• Non-Standard Module sollten in jedem PHP-Programm vor ihrer Verwendung geprüft werden, z.B.
<?php
$modul_ok = 0; if(extension_loaded('modulname')) { $modul_ok=1;}
?>
|
• Bei Verwendung von Non-Standard Modulen sind ihre PHP-Programme nur mehr bedingt portabel: Wenn bei ihrem Web-Provider oder auf einem beliebigen anderen Server das benötigte Modul nicht installiert ist, dann laufen ihre Programme nicht ! |
Programmierung eigener PHP-Module mit C++ |
|
| Die Programmierung ist nicht allzu schwierig, wenn sie über Erfahrung mit der → Programmiersprache C++ und über einen C++-Compiler verfügen (Standard in jeder Linux-Distribution). | Eine Anleitung mit Beispiel finden sie im PHP-Quellcode, dessen aktuelle Version sie kostenfrei aus dem Internet laden können, bei PECL und Pear usw. |
Libraries & Classes |
|
| Im Internet sind tausende PHP-Dateien unter Stichworten wie "library", "class", "module" etc. (meist kostenlos) verfügbar. |
Folgen sie bei der Anwendung den mitgegebenen Hinweisen. Kleinere Libraries werden meist mit der include-Anweisung (besser include_once ) in eigene PHP-Scripts eingebunden. |
|
Ausgewählte Beispiele:
phpMyAdmin
(MySQL-Administration)NetOffice, dotProject (ProjectManagement) Tikiwiki (Content Management System CMS) |
|
|
Letzte Änderung dieser Seite: 2011-12-01 09:24:56
|