Computer:: Wiki-Smarty

Gehört zu: Web Authoring
Siehe auch: PHP

Smarty meine PHP Template Engine (aus Wiki)

Smarty ist eine in PHP realisierte Template Engine für die Entwicklung zun Pflege von Websites (siehe: WebAuthoring).

Damit wird der Inhalt der Webseiten getrennt von der Darstellung (“Präsentation”) gehalten und dadurch eine bessere Verwaltung (Site Management) möglich. Smarty erfreut sich einer sehr grossen Community. Der ursprüngliche Entwickler ist Andrei Zmievski. Infos gibt es bei http://smarty.php.net

Die Template-Engine patTemplate (http://www.php-tools.net) wird für den 2003 neu gestalteten Web-Auftritt (Portal) von 1und1.com verwendet.

 Meine Smarty-Installation

  • Definitive Software Library ID: Smarty
  • Version: 2.4.2 (vom 11.02.2003)
  • Bezugsquelle: Freshmeat http://freshmeat.net/projects/smarty/ http://smarty.php.net/
  • Installationsdatum: 11.05.2003
  • Plattform: Entwicklungssystem (Notebook)
  • Installations-Ordner: d:\bin\php\smarty\….
  • Plugin-Ordner: d:\bin\php\smarty\plugins
  • Systemvoraussetzungen: PHP

 Konfiguration

  • In D:\bin\php\smarty\Smarty.class.php sind festverdrahtete Pfade
  • In D:\bin\php\smarty\plugins\function.filemtime.php ist ein festverdrahteter Pfad
  • In der PHP-Konfigurationsdatei D:\bin\php\PHP.INI wird der include_path wie folgt ergänzt: include_path = “.;d:\bin\php\pear;d:\bin\php\smarty;.\templates;.\plugins;.\include”

 Meine Website mit Smarty

Für meine WebsiteTraditionell setze ich Smarty ein. Da ich beim WebProvider keine PHP-Unterstützung habe, setzte ich Smarty auf meinem Entwicklungssystem (Notebook) ein und erzeuge daraus statische HTML-Seiten, die ich von Zeit zu Zeit hochlade.

 Die Smarty-Dateien (*.php)

Die Smarty-Dateien meiner Website liegen auf meinem Entwicklungsrechner (Notebook) in: d:\var\www\htdocs\smarty.kr8.de
Für jede Web-Seite befindet sich dort eine kleine PHP-Datei (z.B. index.php, humor.php, methods.php), in der die Template-Parameter gesetzt werden und die Template dann aufgerufen wird.

Diese Template-Parameter sind:

  • Diverse Parameter (Titel, Autor, Datum, Symbol, Banner,…)
  • Article: Aufruf des eigentlichen Textbausteins (z.B. “humor.inc”)
  • Menu: Ein Array, das die zu generierende Menüleiste definiert.

Als letzte Zeile erfolgt der Aufruf der Template, das ist standardmässig krachtweb.tpl.

 Welche Templates (*.tpl) verwende ich?

  • krachtweb.tpl: Mein Standard
  • krachtweb_popup.tpl: Für die kleinen Popup-Seiten (z.B. im Bereich “Ostern”)
  • krachtweb_print.tpl: Zur Erzeugung “druckerfreundlicher Varianten” einer Seite (z.B. beim CV)
  • krachtweb_tree.tpl: Für Seiten mit spezieller Tree-Navigation (z.B. im Bereich “Ostern”)

Die Templates befinden sich in d:\var\www\htdoc\smarty.kr8.de\templates

 Textbausteine (*.inc)

Die Textbausteine sind Dateien, die ein HTML-Fragment mit dem eigentlichen Text enthalten (z.B. “humor.inc”) und befinden sich in d:\var\www\htdocs\smarty.kr8.de\templates.

 Die dynamische Website

Damit sind wir fertig. Die dynamische Website kann nun (auf dem Entwicklungssystem) betrachtet werden. Zum Beispiel:

Leider besteht auf diese Seiten kein Zugriff vom Internet aus.

 Die statische Website

Zur Generierung der statischen HTML-Seiten wird der PHP Command Line Interpreter “CLI” verwendet. Z.B.:
cd \var\www\htdocs\smarty.kr8.de

 \php\cli\php -f index.php > \var\www\www.kr8.de\htdocs\index.htm
 \php\cli\php -f humor.php > \var\www\www.kr8.de\htdocs\humor.htm
 \php\cli\php -f methods.php > \var\www\www.kr8.de\htdocs\methods.htm 

Die so erzeugten statischen HTML-Seiten werden in \var\www\www.kr8.de\htdocs abgelegt und können dort zur Kontrolle betrachtet werden. Zum Beispiel:

Leider besteht auf diese Seiten kein Zugriff vom Internet aus.

 Upload der statischen Seiten zum Web-Provider

Mit einem FTP-Client werden diese statischen HTML-Seiten nun zum WebProvider hochgeladen und können dort öffentlich betrachtet werden. Zum Beispiel:

 Selektives Generieren der statischen HTML-Seiten mit einem Makefile

Das Generieren aller ca. 120 statischen HTML-Seiten dauert etwas lange. Wenn man jeweils nur das neu generiert, was von Änderungen betroffen war, geht es viel schneller. Dazu verwende ich das bewährte Unix-BuildTool Make.

Das produktive Makefile für meine Website ist:

  • Makefile: D:\home\kracht\www\www.kr8.de\htdocs\makefile

Das Generieren der statischen HTML-Seiten geschiet durch eine Aufruf der Progamms Make durch ein BAT-File:

  • BAT-File: D:\home\kracht\www\www.kr8.de\htdocs\makeweb.bat

Der prinzipielle Aufbau meines Makefiles ist wie folgt:

TEMPL = /var/www/www.kr8.de/smarty/templates/
PHP	= /var/www/www.kr8.de/smarty

# first target is the default target of the make command

all: krachtweb

krachtweb: index.htm humor.htm methods.htm

index.htm:	  ${TEMPL}index.inc ${PHP}index.php ${TEMPL}krachtweb.tpl
	\php\cli\php -f ${PHP}index.php > index.htm

humor.htm:		 ${TEMPL}humor.inc ${PHP}humor.php ${PHP}menu_freizeit.inc ${TEMPL}krachtweb.tpl
	\php\cli\php -f ${PHP}humor.php > humor.htm

methods.htm:		 ${TEMPL}methods.inc ${PHP}methods.php ${PHP}menu_humor.inc ${TEMPL}krachtweb.tpl
	\php\cli\php -f ${PHP}methods.php > methods.htm

03.04.2004 Menü-Ausprägungen für alle Seiten ausgelagert in INC-Dateien “menu_xyz.inc”

03.04.2004 Datum der letzen Änderung wird mithilfe eines Smarty-Plugins übernommen

FileMtime Plugin (Plugin-Ordner: d:\php\smarty\plugins)

<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Type:	  function
 * Name:	  filemtime
 * Purpose:  get the lastmodified date and time from a file
 *
 * Example:  {filemtime file='hugo.inc'}
 * -------------------------------------------------------------
 */
function smarty_function_filemtime($params, &$this)
{
	 extract($params);

	 if (!isset($file)) {
		  $this->trigger_error("filemtime: missing 'file' parameter");
		  return;
	 }
	 if($file == '') {
		  return;
	 }
	 $file = "d:/home/kracht/www/smarty.kr8.de/templates/" . $file;
	 $html = date('Y-m-d H:i:s', filemtime($file));
	 return $html;
}
?>

Einsatz des Plugins in der Smarty-Template

  <address>Dietrich Kracht. Copyright © 2004. All rights reserved. Page last modified: {filemtime file="$Article"}
  </address>

— Main.DietrichKracht – 25 Mar 2004

Computer: Internet (aus Wiki)

Gehört zu: Computer

Das Internet (aus Wiki)

 Das Internet, das World Wide Web, das Web, das WWW

Manche möchten nur darin surfen:

Andere wolle eigene Websites aufbauen:

Immer benötigt man einen Zugang zum Internet:

Senioren im Internet:

Standards

 Captcha

Akronym für: Completely Automated Public Turing test to tell Computers and Humans Apart

 Abzock-Rechnungen

Einschreiben mit folgendem Text:

  1. Weisen Sie mir nach, mit welchen Schritten ich den Vertrag abgeschlossen haben soll.
  2. Hilfsweise widerrufe ich einen möglicherweise abgeschlossenen Vertrag.
  3. Hilfsweise fechte ich meine möglicherweise abgegebene Willenserklärung wegen Inhaltsirrtum und Täuschung an.

— Main.DietrichKracht – 25 Mar 2004

Computer: PHP (aus Wiki)

Gehört zu: Web-Anwendungen
Siehe auch: Google Fotos, Apache, PHP
Benutzt:  Fotos aus pCloud

Stand: 30.10.2021

PHP mit Apache auf meinen Windows-Computern

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 Open Source Software 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

Aufruf von PHP

PHP wird normalerweise als Modul in Apache installiert und benutzt.
Man kann PHP aber auch von der Kommandozeile aus aufrufen (s.u.).

Viele wichtige Anwendungen laufen unter Apache mit PHP:

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.
  • PHP5 ab Juli 204
  • PHP7 ab Dezember 2015

Meine Installationen von PHP

Ich betreibe/benutze folgende PHP-Installationen:

Upgrading to PHP 7.0.33

Bei meinem WebProvider Strato musste ich schon in 2018 auf PHP7 umstellen, da PHP5 nur noch mit zusätzlichen Kosten unterstützt wurde.

MIt dem neuen PHP7 liefen dann meine MediaWikis bei Strato nicht mehr, sodass ich diese im März 2019 ebenfalls auf neune Versionen migrieren musste.

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 Installationsordner von PHP zeigen. Diese müssen eventuell manuell angepasst werden.

Besonderheiten bei PHP5 (Windows)

PHP5 und Sessions

Unter Windows Vista wird in der php.ini angelegt:

session.save_path = C:\Users\dkracht\AppData\Local\Temp\php\session

Wenn diese Ordner-Struktur versehentlich gelöscht wird, funktioniert die PHP-Session-Verwaltung nicht mehr richtig.
Z.B. kann man sich in MediaWiki nicht mehr anmelden…
Beispielsweise löscht das “Aufräum”-Programm CCleaner alles unterhalb von Tmp….

PHP5 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!).

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.

PHP5 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 Computer Kragenbaer

 Installation

Konfiguration

PHP auf Computer Westhost

PHP Installation Westhost

  • Version: 5.2.1
  • Installations-Verzeichniss: ???
  • Konfigurations-Dateien
    • INI-Datei: /etc/php.ini (siehe Abschnitt “Konfiguration”)

 PHP Konfiguration Westhost

Umgebungsvariable

  • PATH=???
  • PHPRC=??? (Wo die INI-Datei ist)
  • PHPINFO:
    • Server API: Apache
    • Configuration File (php.ini) Path: /etc/php.ini

PHP auf ComputerLonzo

 PHP Installation ComputerLonzo

  • Version: 5.2.3
  • Installations-Verzeichnis: C:\Programme\PHP
  • Konfigurations-Dateien
    • INI-Datei: C:\Programme\php\php.ini (siehe Abschnitt “Konfiguration”)

 PHP Konfiguration ComputerLonzo

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: Event Log wegen Apache-Fehler (pCloud: EventApachePHP5.jpg)

Apache Service

PHP auf ComputerBraunbaer

 PHP 5.2.3 Installation

  • Definitive Software Library ID: PHP
  • Name: PHP
  • Version: 5.2.3 (28.6.2007 ComputerBraunbaer)
  • Lieferant: http://www.php.net
  • Installations-Verzeichnis: d:\Programme\PHP
  • Konfigurations-Dateien
    • INI-Datei: d:\programme\php\php.ini (siehe Abschnitt “Konfiguration”)

 Installierte Extensions

Bei PHP5 können die Extensions bereits beim Installationsvorgang ausgewählt werden.

Zusätzlich dazu können in der php.ini noch sog. dynamische Extensions angegeben werden.

 PHP Konfiguration auf ComputerBraunbaer

Umgebungsvariable

  • PATH=D:\Programme\PHP
  • PHPRC=D:\Programme\PHP (ComputerBraunbaer: Wo die INI-Datei ist)

Folgende Einstellungen sind in der php.ini vorgenomen worden:

  • Ordner für Extensions: d:/programme/php/ext
  • register_globals = On (für Anwendung PhpLinks)
  • upload_max_filesize = 16M (für Anwendung Owl)
  • Include_path (für Smarty)
    • = “.;d:\php\pear;d:\php\smarty;.\templates;.\plugins;.\include”  ?????????????????
    • php_db.dll  ???
    • php_dba.dll  ???
    • php_domxml.dll (welche Anwendung benötigt das???)
    • php_gd2.dll (für Anwendung MediaWiki
    • php_iconv.dll (für Anwendung MediaWiki)
    • php_ldap.dll (für Anwendung Rolodap)
  • Zend Optimizer (für welche Anwendung???)
  • PHP-GTK

Apache 1.3.29 Konfiguration

Installation als dynamisches Apache-Modul (SAPI):

LoadModule php4_module d:/php/sapi/php4apache.dll
AddModule mod_php4.c

Das Hauptmodul php4apache.dll benötigt das zentrale PHP-Modul php4ts.dll. Das wird zunächst in \WINNT\system32 gesucht, wenn man es dahin nicht kopieren möchte, kann man es auch in den gleichen Ordner wie php4apache.dll kopieren:

copy d:/php/php4ts.dll d:/php/sapi/php4ts.dll

Wenn man jetzt den Apache-Service neu startet, meldet er sich mit: Apache/1.3.27 (Win32) PHP/4.3.1…

Nun fügt man noch zur Apache-Konfigurationsdatei httpd.conf folgendes hinzu:

AddType application/x-httpd-php .php

und schon werden PHP-Scripts vom Apache-WebServer ausgeführt. Z.B. http://localhost/phpinfo.php

PHP Applikationen

Tabelle 1: Meine PHP-Applikationen

Applikation Nutzung MySQL-Datenbank
GmoChronik Mein altes Web-Log (migriert nach DocBook) b2
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 Dokumentenmanagement mydms
nuke PhpNuke-Installation von GMO/Bonzo nuke
Owl Owl DokumentenManagement owl
PhpKalender Monatskalenderblätter
PhpLinks Anwendung PhpLinks (Link-Management) phplinks
PhpMyAdmin MySQL-Administration (alle)
PhpWiki Mein altes phpwiki (migriert nach TWiki) phpwiki
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

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-Skripts 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 

— Main.DietrichKracht – 25 Mar 2004