PHP
Beispiel und Anleitungen rund um PHP
php – Regular Expression Schnipsel – Escaping “/”
3Hier ein kleines Beispiel wie man die Lesbarkeit von RegEx durch den Delimiter “#” verbessern kann …
$zeichenkette = "suckup.de Informationen / test, lall / Linux / lall123"; #$suchmuster = "/^[^\/]*\/[^\/]*\/[^\/]*\/[^\/]/"; $suchmuster = "#^[^/]*/[^/]*/[^/]*/[^/]#"; preg_match($suchmuster, $zeichenkette, $treffer); print_r($treffer);
Ausgabe:
Array ( [0] => suckup.de Informationen / test, lall / Linux / )
UTF-8 Byte Order Mark (BOM) in php-Dateien …
0for Linux (shell):
BOM aus allen PHP-Dateien entfernen:
find . -type f -iname "*.php" -exec sed -i '1s/^\xEF\xBB\xBF//' {} \;
PHP-Dateien mit BOM anzeigen:
find . -type f -iname "*.php" -exec grep -l $'\xEF\xBB\xBF' {} \;
mehr Infos:
sed – suckup.de/linux/streameditor-sed
find – suckup.de/linux/find-linux
Byte Order Mark – http://de.wikipedia.org/wiki/Byte_Order_Mark
php – Regular Expression Schnipsel – Links aus <a>-Tags
0Habe zu dem Thema (“Reguläre Ausdrücke”) bereits ausführlicher geschrieben -> http://suckup.de/howto/php-howto/php-sicherheit-erhoehen-teil-2/ <- daher folgt hier einfach ein Beispiel, welches man sicherlich noch optimieren kann …
<?php $lall =' lall lall123 <a style="gfsedfd;" href="http://test1.de">test <a style="gfsedfd;" href="test2.php" target="_blank>test</a> dsadsa <a style="gfsedfd;" href="http://test3.de" target="_blank>test</a> dsads '; $lall = str_ireplace("\r", '', $lall); $lall = str_ireplace("\n", '', $lall); $lall = str_ireplace("\t", '', $lall); preg_match_all('/<a [^>].*href="(.*)".*>/i', $lall, $lall_new); $allLinks = explode("</a>", $lall_new[0][0]); foreach ($allLinks as $key => $val) { $val = trim($val); if ($val != '') { $data More >
PHP-Sicherheit erhöhen – Teil 2
6Kein Programm ist 100% sicher, aber wir wollen es potenziellen Angreifern auch nicht zu leicht machen, daher folgen ein paar Grundlegende Regeln zur Sicherheit von PHP. Ich gehe hier davon aus, dass die installierte PHP-Version auf dem aktuellen Stand ist und somit weniger Angriffsfläche bietet. -> PHP-Sicherheit erhöhen – Teil 1
1.) “register_globals” sollten deaktiviert sein!!!Falls diese Option aktiv ist, ist das Überschreiben lokaler Variablen via GET / POST möglich z.B.:
test.php:——— <?php if (!isset($test)) { $test = 1; } echo 'Der Wert von test ist: '.$test; ?>
Browser:——–…/test.php?test=2
Ab PHP 4.2 ist diese Option (php.ini -> register_globals = Off) jedoch bereits standardmäßig auf “Off” gesetzt.
2.) “Type Casting” verwenden
Casting bedeutet so viel wie Umwandeln einer More >
Rewrite-Rules: Apache vs Nginx
1Bei dem Apache Webserver wird das URL-Handling (Rewrite-Rules) via .htaccess gesteuert, sobald sich eine Datei mit diesem Namen in einem Verzeichnis befindet, werden die darin enthaltenen Befehle vom Apache umgesetzt. Da dieses Verfahren jedoch voraussetzt, dass alle Verzeichnisse zuvor auf eine solche Datei geprüft, diese anschließend eingelesen und verarbeitet werden muss, macht es Sinn wie z.B. beim Nginx Webserver diese in die Konfiguration des Webs aufzunehmen. Leider ist die Syntax und Logik dieser beiden Rewrite-Rules nicht kompatibel, daher folgt eine Einführung in dieses Thema … außerdem habe ich auf github.com/voku/ meine kompletten Konfigurationsdaten für Nginx + PHP + MySQL hochgeladen.
Erklärung: einfache Weiterleitung
Apache:
Redirect More >
PHP-Sicherheit erhöhen – Teil 1
10Jeder Server welcher PHP-Skripte verarbeitet, sollte zumindest zwei Sicherheitsschlösser eingebaut haben, so dass man nicht jedem Tür & Tor öffnet.
1.) suPHP oder suexec + fcgid
Wir sollten PHP-Skript nicht alle mit dem selben User-Berechtigungen (z.B. apache) laufen lassen, daher empfiehlt es sich auf kleinen Webservern suPHP und auf Webseiten mit mehr Traffic “Fast CGI” zu installieren. Alternativ kann man PHP mit “PHP-FPM“ (FastCGI Process Manager) auch jeweils als eigenständigen Prozess laufen lassen.
2.) Suhosin
Da einige PHP-Projekte nicht wirklich für Ihre Sicherheit bekannt sind, empfiehlt es sich zudem die “Suhosin” Erweiterung für PHP zu installieren. “Es wurde entworfen, um den Server und die Benutzer vor bekannten und unbekannten Fehlern in PHP-Anwendungen und im PHP-Kern More >
Monatsnamen / Wochentagsnamen in deutsch via PHP
3“Gibt einen String zurück, der den angegebenen Formatierungs-Merkmalen entspricht. Dabei wird der gegebene Timestamp/ Zeitstempel oder – falls dieser fehlt – die momentane lokale Zeit benutzt. Der Monats- und Wochentagsname wird entsprechend des per setlocale() eingestellten Wertes gesetzt.” - php.net/manual/de/function.strftime.php
setlocale(LC_TIME, "de_DE"); echo strftime("%A"); // Wochentagsname echo strftime("%B"); // Monatsname
unoconv: umwandlung zwischen allen Dokument-Formaten von OpenOffice
0Mit unoconv kann man viele Dokument-Formate konvertieren, unterstützte Formate sind unter anderem das “Open Document Format” (.odt), “MS Word” (.doc), “MS Office Open/MS OOXML” (.xml), “Portable Document Format” (.pdf), “HTML”, “XHTML”, “RTF”, “Docbook” (.xml)…
Funktionen:- konvertiert alle Formate die OpenOffice unterstützt
- OpenOffice unterstützt bis zu 100 Dokument Formate
- kann genutzt werden um Vorgänge zu automatisieren (Skripte -> z.B. shell oder php)
- unterstützt weitere Tools -> “asciidoc”, “docbook2odf/xhtml2odt”
- kann Style-Vorlagen (templates) während der Konvertierung anwenden (corporate identity)
- kann sowohl als Server, als auch als Client fungieren
Es folgt eine Liste von Ausgabe-Formaten von OpenOffice (und somit auch von unoconv), die Eingabe-Formate können More >
Nginx + PHP5-fpm auf Debian/Ubuntu
22Wer komplett auf nginx als Webserver umsteigen will kann dies auch sehr einfach bewerkstelligen. Ich persönlich nutzte diese Methode und es laufen mehrere WordPress-Webseiten, e107, DokuWiki u.s.w. tadellos mit diesem System.
Als erstes müssen wir unsere sources.list ein wenig erweitern… um php5-fpm direkt mit dem Projektmanager installieren zu können, wie dies Funktioniert habe ich bereits in einem anderen Beitrag beschreiben: php-5-FPM
Danach installieren wir nginx (Webserver) + PHP, wenn du noch apache2 oder einen anderen Webserver, welcher auf Port 80 lauscht installiert hast, musst du diesen nun deinstallieren bzw. erst einmal stoppen und ggf. einige libraries nachinstallieren, falls du Ubuntu und nicht More >
PHP 5.3.3
3Auf Dotdeb.org gibt es PHP in Version 5.3.3 im .deb-Format. Das nachfolgende kleine HowTo zeigt wie du dies auf Debian installieren kannst. Es gibt Pakete für Debian (Lenny), sowohl für amd64 als auch i386 Architekturen.
Install:1.) als erstes benötigen wir eine Root-Shell
sudo bash2.) nun können wir die zusätzlichen Quellen einfügen
echo "deb http://php53.dotdeb.org stable all" >> /etc/apt/sources.list echo "deb-src http://php53.dotdeb.org stable all" >> /etc/apt/sources.list3.) diese einmal aktualisieren
apt-get update4.) und schon können wir PHP 5.3 installieren
aptitude safe-upgradeMigration von PHP 5.2.x zu PHP 5.3.x: de.php.net/migration53
Falls man bereits mit Debian (Squeeze) arbeitet oder die Lenny-Backports in den Quellen eingefügt hat und daher das Paket libtool > 2.2 More >

0 */2 * * * wget -q -O /dev/null[…] 1 month ago