Computer: PHP (aus Wiki)

PHP Applications (aus Wiki)

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 Web­seiten 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 ent­wickelt. 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

Retrieved from my Wiki