PHP-Module & Funktionen

get_loaded_extensions() & get_extension_funcs()

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--Module Alle geladenen PHP-Module
Live--Funktionen Alle Funktionen eines Moduls
Live--Index 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--PHP:
get_cfg_var('extension_dir') =

In einigen neueren PHP-Versionen ist diese Zeile der Konfigurations-Datei php.ini nach Installation abgeschaltet:
; 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--Ergebnisse werden in der Liste (unten) angezeigt.
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;
if(extension_loaded("standard")) {$standard_ok=1;}
Live--PHP:
$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 Laden

In 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--PHP:   $standard_ok = 1
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 Module

Ein 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 Module

Ein 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 Module

Wenn 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--Daten dieses Webservers:
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.

Compilieren erfordert einige Fachkenntnisse. Bei unsachgemäßer Ausführung können Schäden an Daten, Software und System entstehen !
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

Download

Wenn man die genaue Web-Adresse eines Moduls kennt, dann kann man es mit einem Konsolen-Befehl downladen:
# cd /home/test/phpmodul
# wget http://pecl.php.net/get/modulname.tgz
Alternativ kann man das Modul-Archiv auf jedem beliebigen Weg laden und in einem eigenen Verzeichnis des Linux-PC speichern.

Auspacken

Wechseln sie in das Verzeichnis mit dem Archiv und packen sie es aus:
# cd /home/test/phpmodul
# tar -xvzf modulname.tgz
Die Dateien werden normalerweise in ein Sub-Verzeichnis entpackt, z.B.
/home/test/phpmodul/modulname

Compilieren

Wechseln 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
# ./configure
# make
# make install
Bei sauberer Installation erhalten sie eine Erfolgsmeldung: Das fertige Modul wurde installiert.

Kontrolle

Im 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

Konfiguration

Nun 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
/etc/php/cli/php.ini
Suchen sie das Kapitel Dynamic Extensions und tragen sie den Datei-Namen ihres Moduls ein, z.B.
extension=modulname.so

Webserver-Neustart

Damit 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();"
# php -r "phpinfo();" | more
Das neu installierte Modul wird ausgewiesen.

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