PHP ist in meinem Anwendungskatalog die Scriptsprache der ersten Wahl.
Was ist PHP
PHP steht für “PHP Hypertext Prozessor”. Eine Scriptsprache, die für die Entwicklung dynamischer Webseiten und WebApplications gedacht ist – wie beispielsweise auch mit ASP oder ColdFusion. PHP ist aber im Gegensatz zu solchen Ansätzen eine freiverfügbare OpenSourceSoftware und quer über viele Plattformen (Betriebssysteme, WebServer) einsetzbar. Im Gegensatz zu älteren Scriptsprachen (wie Perl), die aus der Zeit vor dem Web stammen, wurde PHP speziell für ein Einsatz auf WebServern entwickelt. PHP besticht durch einfache Verarbeitung von Web-Formularen, seine gute Anbindung an Datenbanken und die Vielfalt weiterer Funktionsbibliotheken, sowie seine weite Verbreitung. PHP ist ein Apache Projekt http://php.apache.org = http://www.php.net
Geschichte von PHP
Im Herbst 1994 begann Rasmus Lerdorf mit einem Hack. Versionen:
- PHP/FI 1.0, Frühling 1995,
- PHP – “Personal Home Page Tools”, PHP/FI 2.0, Sommer 1995,
- FI – “Form Interface”, PHP 3.0, 1997,
- “Personal Home Page” oder “PHP HyperText Preprocessor”, PHP 4.0, Frühling 2000.
Installation von PHP 7.4 unter Windows
- DefSoftLib: PHP
- Hersteller/Bezugsquelle: PHP.NET
- Download: http://windows.php.net/download
- Version: 7.4.30
- Vorgehensweise:
Quelle: https://www.segal-online.de/php-7-auf-windows-installieren/
In einem ersten Schritt muss PHP von der Webseite PHP.NET heruntergeladen werden. Da wir die Installationsdateien für Windows benötigen, können wir gleich auf die PHP Windows Download Seite gehen. In der linken Spalte sehen Sie, dass PHP 7 eine vollständige 64-bit Unterstützung gewährleistet. Und da wir PHP 7 als Apache Modul installieren wollen, brauchen wir die “Thread Safe” Version. Daher ist die richtige zu wählende Datei “php-7.4.30-Win32-vc15-x64.zip”.
- Download Datei: php-7.4.30-Win32-vc15-x64.zip – VC15 x64 Thread Safe (2022-Jun-07 22:15:56)
Als Installations-Ordner legen wir an:
- ComputerAcerBaer – C:\Program Files\PHP7
- ComputerFlachmann – D:\PHP7
und entzippen die Datei in diesen Ordner.
Konfiguration von PHP 7.4 unter Windows
Im Installationsordner befinden sich die Dateien:
- php.ini-develpment
- php.ini-production
Eine davon nehmen wir und kopieren sie als Datei php.ini. Diese Datei “php.ini” öffnen wir in einem Text Editor undnehmen darin ein paar kleine Anpassungen vor.
1. Anpassung
Wir suchen nach der auskommentierten Zeile mit dem Text “Paths and Directories”.
Darunter befinden sich Einträge für “include_path” und “extension_dir”. Diese werden wir nun wie folgt modifizieren:
include_path = "C:/Programme/php7/includes/"
extension_dir = "C:/Programme/php7/ext/"
Dabei ist die Verwendung des “Forward Slash” ganz wichtig.
2. Anpassung
In dieser PHP Version sind die PHP Erweiterungen alle deaktiviert, so dass man diejenigen, die man verwenden möchte manuell aktivieren muss. Wir suchen nach dem Text “Dynamic Extensions” und aktivieren folgende Erweiterungen. Dies kann je nach Bedarf auch anders gestaltet werden.
extension=php_bz2.dll
extension=php_curl.dll
extension=php_fileinfo.dll
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_gmp.dll
extension=php_intl.dll
extension=php_mbstring.dll
extension=php_exif.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll
Nachdem ich den PATH vermittels “systempropertiesadvanced” (oder auch: Einstellungen -> System -> Info -> Erweiterte Systemeinstellungen) um “C:/Program Files/PHP7” ergänzt hatte (diesen Eintrag nach ganz vorne), läuft jetzt Apache mit PHP und den Extensions laut “error.log” richtig an.
3. Anpassung
Dann suchen win in dieser Datei php.ini nach “Error handling and logging” und stellen für unsere Entwicklungsrechner ein:
error_reporting = E_ALL
und
display_errors = On
4. Anpassung
Dann suchen wir nach “[session]”
Dort tragen wir den Namen eines Ordners für die Speichung von PHP-Session-Daten ein. Dieser Ordner muss vorhanden sein:
- ComputerAcerbaer: session.save_path = C:\Users\rubas\AppData\Local\Temp\php\session
- ComputerFlachmann session.save_path = D:\data\temp\php\session
Installation von PHP 8.2 unter Windows
Das geht ganz analog zur Installation von PHP 7.4. Also:
Download
- Download Datei: php-8.2.2-Win32-vs16-x64.zip
Installations-Ordner
- ComputerAcerBaer – C:\Program Files\PHP8
- ComputerFlachmann – D:\PHP8
und entzippen die Datei in diesen Ordner.
Konfiguration von PHP 8.2 unter Windows
Anpassen php.ini
include_path = "C:/Programme/php8/includes/"
extension_dir = "C:/Programme/php7/ext/"
Dynamic Extensions
wie oben
Nachdem ich den PATH vermittels “systempropertiesadvanced” (oder auch: Einstellungen -> System -> Info -> Erweiterte Systemeinstellungen) um “C:/Program Files/PHP7” ergänzt hatte (diesen Eintrag nach ganz vorne), läuft jetzt Apache mit PHP und den Extensions laut “error.log” richtig an.
Error Reporting
error_reporting = E_ALL
display_errors = On
Session
session.save_path = C:\data\temp\php\session
Apache Web-Server für PHP Version 7.4 konfigurieren
Wie bereits in dem Artikel zu dem Apache Web-Server erwähnt, müssen wir jetzt nochmals die Datei:
C:\Program Files\Apache24\conf\httpd.conf
bearbeiten und dem Apache Web-Server mitteilen, dass wir PHP als Skriptsprache verwenden wollen. Wir öffnen diese Datei in einem Text Editor und gehen an das Ende der Datei. Dort fügen wir die folgenden Zeilen hinzu:
LoadModule php7_module "C:/Program Files/php7/PHP7apache2_4.dll"
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html
PHPIniDir "C:/Program Files/PHP7"
Danach fahren wir den Apache Web-Server herunter und starten ihn neu.
Nun können PHP-Sequenzen in Web-Seiten eingebaut werden; allerdings müssen solche Web-Seiten dann die Extension “*.php” haben.
Apache Web-Server für PHP Version 8.2 konfigurieren
Wie bereits in dem Artikel zu dem Apache Web-Server erwähnt, müssen wir jetzt nochmals die Datei:
C:\Program Files\Apache24\conf\httpd.conf
bearbeiten und dem Apache Web-Server mitteilen, dass wir PHP als Skriptsprache verwenden wollen. Wir öffnen diese Datei in einem Text Editor und gehen an das Ende der Datei. Dort fügen wir die folgenden Zeilen hinzu:
LoadModule php_module "C:/Program Files/php8/PHP8apache2_4.dll"
AddType application/x-httpd-php .php
DirectoryIndex index.php index.html
PHPIniDir "C:/Program Files/PHP8"
Danach fahren wir den Apache Web-Server herunter und starten ihn neu.
Nun können PHP-Sequenzen in Web-Seiten eingebaut werden; allerdings müssen solche Web-Seiten dann die Extension “*.php” haben.
Meine Installationen von PHP
Ich betreibe/benutze folgende PHP-Installationen:
PHP 7.4.30
Mittlerweile habe ich PHP7 und mein WebProvider Strato sagt mir dass ich auf PHP8 gehen soll.
Unter PHP8 läuft aber dort nicht mein WordPress-Blog.
Deshalb bleibe ich zunächst bei PHP7 und versuche alles auch auf meine lokalen Computer zu ziehen. Da habe ich aber lange nichts mehr gemacht, weill es ja so gut auf Strato lief.
Upgrading to PHP 5.2.17
WordPress 3.3.1 läuft nicht mehr mit PHP 5.2.3, deshalb habe ich PHP von 5.2.3 auf 5.2.17 upgraded.
Echte Upgrades gibt es leider nicht. Mann muss das neue PHP in einen neuen Ordner installieren (D:\bin\PHP\, D:\bin\PHP\php5apache2_2.dll),
Die PHP-Installation mit MSI macht dann ein kleines Update der Apache-Konfigurationsdatei httpd.conf. Dabei werden am Ende der Conf-Datei drei Zeilen eingetragen, die auf den Installtionsordner von PHP zeigen. Diese müssen eventuell manuell angepasst werden.
Besonderheiten bei PHP unter Windows
PHP und MySQL
Bei PHP5 ist die MySQL-Unterstützung nicht fest eingebaut (ein-compiliert), sondern es wird die sog. Client-Bibliothek namens libmysql.dll benötigt und zwar zusätzlich zu der PHP-Extension php_mysql.dll.
Die Client-Bibliothek ist Bestandteil von MySQL, wird aber auch im PHP5-Paket mitgeliefert. Achtung: Es könnten Versionskonfilikte auftreten.
Die MySQL-Client-Bibliothek muss vom Apache geladen werden, sonst kann die PHP-Extension php_mysql.dll auch nicht geladen werden und es gibt eine entsprechende Fehlermeldung im Apache-Error-Log (da sollte man ruhig ab und zu hineinschauen!).
Das Apache-Error-Log findet man im Ordner:
<Apache Ordner>\logs\error.log
Damit die MySQL-Client-Bibliothek zum Laden gefunden wird, kann man sie in den Order Windows/System tun. Wer das nicht möchte, kann sie im Ordner PHP belassen, dann muss alldings zwingend der Ordner PHP in den PATH mit aufgenommen werden. Alternativ kann man sie in den Ordner Apache/bin tun.
PHP und OpenSSL
Die PHP-Extension php_openssl.dll benötigt zusätzlich die Bibliothek libeay32.dll. Bei mir hat das nur dann funktioniert, wenn ich libeay32.dll in den Ordner Apache/bin kopiert habe.
PHP auf ComputerAcerbaer
PHP Installation auf ComputerAcerbaer
- Version: 7.4.30
- Installations-Verzeichnis: C:\Program Files\PHP7
- Konfigurations-Dateien
- INI-Datei: C:\Program Files\PHP7\php.ini (siehe Abschnitt “Konfiguration”)
PHP.INI auf ComputerAcerbaer
session.save_path = C:\Users\rubas\AppData\Local\Temp\php\session
PHP auf ComputerFlachmann
PHP Installation ComputerFlachmann
- Version: 7.4.30
- Installations-Verzeichnis: D:\Programme\PHP
- Konfigurations-Dateien
- INI-Datei: D:\Programme\php\php.ini (siehe Abschnitt “Konfiguration”)
PHP Konfiguration ComputerFlachmann
Umgebungsvariable
- PATH=C:\Programme\PHP
- PHPRC=C:\Programme\PHP (ComputerLonzo: Wo die INI-Datei ist)
- PHPINFO:
- Server API: Apache
- Configuration File (php.ini) Path: C:\WINDOWS
- Loaded Configuration File: C:\Programme\php\php.ini
PHP Apache 1.3.29 Konfiguration
In der Apache-Konfigurationsdatei “httpd.conf” eintragen:
LoadModule php5_module "C:\\Programme\\PHP\\php5apache.dll"
...
AddModule mod_php5.c
...
AddType application/x-httpd-php .php .php4 .php3 .phtml
AddType application/x-httpd-php-source .phps
- Nicht “PHPIniDir=…” das ist für Apache 2 gedacht…
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
####PHPIniDir "C:\\Programme\\PHP\\"
LoadModule php5_module "C:\\Programme\\PHP\\php5apache.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
Abbildung 1: Ereignisprotokoll (Google Drive: EventApachePHP5.jpg)
Event Apache PHP
PHP Applikationen
Tabelle 1: Meine PHP-Applikationen mit MySQL-Datenbank
Applikation |
Nutzung |
MySQL-Datenbank |
Status
|
GmoChronik |
Mein altes Web-Log (migriert nach DocBook) |
b2 |
migriert |
PhpWorkshop |
Für SQL-Workshop im PhpWorkshop |
fruits, vokabeln,… |
|
gmo |
Migrierte GMO-Access-Datenbanken |
gmo |
|
PhpKnowhow |
Mein KnowlegeManagement: phpKnowhow |
knowhow |
|
kr8 |
ich ??? |
kr8 |
|
mydms |
Testweise ein Domumentanmanagement |
mydms |
|
nuke |
PhpNuke-Installation von GMO/Bonzo |
nuke |
|
Owl |
Owl DokumentenManagement |
owl |
|
PhpKalender |
Monatskalenderblätter |
– |
aktiv |
PhpLinks |
Anwendung PhpLinks (Link-Management) |
phplinks |
|
PhpMyAdmin |
MySQL-Administration |
(alle) |
aktiv |
PhpWiki |
Mein altes phpwiki (migriert nach TWiki) |
phpwiki |
migriert |
Rolodap |
Zugriffe auf ein LDAP-Directory |
– |
|
Smarty |
Template-Engine für WebsiteTraditionell |
phplinks |
|
Telefonbuch |
Telefonnummern zur Inverssuche (u.a.) |
telefonbuch |
|
Typo3 |
Testweise für das Content-Management-System Typo3 |
typo3 |
|
MediaWiki |
Faulkner-Wiki |
wikidb |
|
Xanadu |
Meine Archiv-Datenbank (Anwendung Archivierung) |
xanadu |
|
PHP Editoren
Wenn man PHP-Skrips entwickeln und ausprobieren will, ist es sehr bequem dafür einen richtigen PHP-Editor bzw. eine PHP-IDE einzusetzen.
Im Gespräch sind heutzutage (2023):
- Sublime
- VS Code
- PhpStorm
- notepad++
- u.a.
Vorteile sind u.a.
- Unterstützung der PHP-Syntax bei der Eingabe
- Zum Testen die sofortige Ausführung des PHP-Codes ohne den Code in HTML-Seiten einbauen zu müssen
Der PHP Command Line Interpreter “CLI”
Für die meinen Einsatz der Smarty Template Engine wird PHP CLI benötigt, da ich PHP-Skripts ohne den WebServer Apache einfach “so” ausführen will. Genauer gesagt, sollen die PHP-Skrips in einem Make-File ausgeführt werden zur Erstellung statischer HTML-Seiten.
Seit PHP Versiom 4.3.0 ist das CLI standardmässig im PHP enthalten und kann wie folgt einfach benutzt werden:
d:\php\php.exe -f methods.php > \home\kracht\www\www.kr8.de\htdocs\methods.htm
PHP Praktikum
Im Zuge meiner Umstellungen von PHP 7.4 auf PHP 8 habe ich folgende keine Übungen mit Hilfe von VS Code gemacht:
Übung 1: Array und foreach-Schleifen
<?php
echo “Hello world!\n”;
/* Simple Array */
$abc = array(‘a’, ‘b’, ‘c’, ‘d’, ‘e’);
echo ‘The third element of the arry is:’, $abc[2], “\n”;
echo ‘The array has ‘, count($abc), ‘ elements.’, “\n”;
echo “Looping through the whole array gives us: “;
foreach ($abc as $b) {
echo $b;
}
/* Associative Array */
$datum = array(‘tag’ => 30, ‘monat’ => 3, ‘jahr’ => 2023);
echo “\nThe array has “, count($datum), ‘ elements.’;
if (array_key_exists(‘jahr’, $datum)) {
echo “\nArray-Key ‘jahr’ existiert.”;
echo “\nDer Key ‘jahr’ hat den Wert: “, $datum[‘jahr’];
}
echo “\nLooping through the whole associative array gives us: “;
foreach ($datum as $k => $v) {
echo “\nKey = “, $k, “, value = “, $v;
}
?>
— Main.DietrichKracht – 25 Mar 2004