PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for the ‘Linux’ Category

Screenshots von Webseiten erstellen mit PHP

with 33 comments

Einen einfachen manuellen Screenshot von einer Webseite zu erstellen ist einfach, brauche ich hier wohl nicht extra erläutern. Wenn man allerdings aus seiner PHP-Applikation Screenshots von Webseiten erstellen möchte oder keine Lust hat auf manuelles Zusammenkopieren weil die Webseite sehr lang oder breit ist, hilft das Projekt wkhtmltopdf. Dieses Kommandozeilentool gibt es für Windows, Linux und Mac, und es läuft auch auf Servern ohne grafische Oberfläche. Auf der Webseite des Projekts findet man sowohl wkhtmltopdf als auch wkhtmltoimage. wk steht dabei für die Webkit Render Engine, die aus einem gegebenen HTML-Input entweder ein PDF oder ein Bild (jpg, png, tiff) erstellt.

Ich werde hier zeigen wie man Bilder erstellt, die Installation ist einfach: Man lädt sich die passende Version herunter, in meinem Fall für einen Debian-Server ist das wkhtmltoimage-0.10.0_rc2-static-i386.tar.bz2 . Die darin enthaltene Datei kopiere ich nach /usr/local/bin , falls bei euch open_basedir aktiv ist muss es natürlich irgendwo in ein erlaubtes Verzeichnis.

wget http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.10.0_rc2-static-i386.tar.bz2
tar -xjvf wkhtmltoimage-0.10.0_rc2-static-i386.tar.bz2
mv wkhtmltoimage-i386 /usr/local/bin/

Ein erster kleiner Test von der Konsole:

wkhtmltoimage-i386 http://www.phpgangsta.de phpgangsta.de.jpg

Hier das Ergebnis (klicken für das Original Bild):

Weiterlesen »

Written by Michael Kliewe

Juli 21st, 2011 at 8:01 am

Schöner hashen mit bcrypt

with 49 comments

Gastartikel von Oliver Sperke.

Ich bin 34 Jahre alt und seit 10 Jahren selbständiger Webentwickler. Mein Fokus liegt dabei auf der Erstellung, Beratung und Optimierung in den Bereichen High Performance, Usability und Sicherheit in den gängisten Internetsprachen: PHP, HTML, Javascript und CSS.

Bei meinem vorherigem Gastbeitrag wurde ich direkt im ersten Kommentar aus meiner heilen Welt geworfen. Dort stand nämlich folgender „erschütternder Kommentar“ zu lesen:

Das du Salting und Mehrfachhashing predigst, während der Rest der Welt schon einen Schritt weiter zu bcrypt geht… Traurig.

Nun ja, dazu möchte ich drei Dinge sagen.

  1. Ich predige nicht (Ausnahme: „Es heißt Standard, verdammt, nicht Standart!“).
  2. Ach, wenn die Welt schon mal auf dem Stand des einfachen md5 wäre …
  3. Bcrypt verdient einen eigenen Beitrag.

Natürlich hatte der Autor völlig recht. Über Hashfunktionen im Web zu schreiben und bcrypt nicht zu erwähnen ist fast schon schändlich. Also bcrypt ist eine Hashfunktion, die auf Langsamkeit optimiert wurde. Um genauer zu sein, es ist nicht mal ein richtiger Hashalgorithmus, sondern eine Blowfish Verschlüsselung, bei der am Ende „die Schlüssel weggeworfen werden“, daher lässt sich das Ergebnis nicht mehr entschlüsseln. bcrypt ist eine Weiterentwicklung der „Traditional DES Scheme“ Funktion aus der Unixwelt. Obwohl dieses Verfahren 30 Jahre lang (!) gute Dienste geleistet hat, stellen sich so langsam „Alterserscheinungen“ ein. Der Zahn der Zeit nagt auch hier in Form von gestiegener Rechenleistung.

Kurze Rückschau

Weiterlesen »

Written by Oliver

Juli 18th, 2011 at 8:56 am

Posted in Linux,PHP

Tagged with , , , ,

Linkpool Nummer 16

with 4 comments

Interessante Einsichten, wie t3n.de gehostet wurde die letzten Jahre: Massenhosting, eigener Serverraum, Housing und nun Individualhosting:

http://t3n.de/news/t3nde-gehostet-290436/

Hat jemand schon Erfahrungen mit diesem PHP Application Server?

http://www.photon-project.com/

Interessante ZendCon Session Podcast Episode über die Memcached Extension:

http://devzone.zend.com/article/13104-ZendCon-Sessions-Episode-040-Memcached-the-better-Memcache-interface

Audio Mitschnitt + Präsentation von der Dutch PHP Conference 2010 über Datenbankversionierung:

http://techportal.ibuildings.com/2011/03/01/dpcradio-database-version-control-without-pain/

Auch von der Dutch PHP Conference 2010, Rob Allen über stressfreies Deployment:

http://techportal.ibuildings.com/2010/11/09/dpcradio-stress-free-deployment/

Sehr schöne Veranschaulichung der Geschwindigkeitsunterschiede zwischen L1 Cache, L2 Cache, RAM und Festplatte:

http://twitpic.com/4a1eot/full

Written by Michael Kliewe

März 20th, 2011 at 12:52 pm

Posted in Linux,PHP

Tagged with , ,

Test von Googles neuem Apache Modul mod_pagespeed

with 17 comments

Google kündigt an, die Welt applaudiert: Das neue Apache-Modul mod_pagespeed soll automatisch Webseiten schneller machen, ohne Aufwand und für jede Seite, eine bis zu 50% schnellere Webseite wird versprochen. Google selbst hat natürlich auch etwas davon: Wenn jede Webseite schneller abrufbar ist, können die Suchmaschinen-Spider schneller und mehr crawlen…

Doch wenn man es selbst ausprobiert sind die Ergebnisse ernüchternd. Ich habe heute Abend das Modul installiert und aktiviert (in unter 3 Minuten), und ein paar Messergebnisse mit Firebug, PageSpeed und YSlow zusammengetragen.

Ergebnis: kein nennenswerter Geschwindigkeitsschub, teilweise sogar langsamer als vorher. Einige haben bei ersten Benchmarks das selbe Ergebnis wie ich erhalten, andere jedoch sprechen von 46% Verbesserung. Es scheint sehr davon abzuhängen wie die Seite aufgebaut ist und ob bereits Maßnahmen zur Verbesserung der Performance getroffen wurden.
Außerdem habe ich auf meiner Seite nach der Aktivierung Probleme mit dem HTML-Validator gefunden die vorher nicht da waren, durch die “Verbesserungen” habe ich plötzlich ungültigen HTML-Code!

Hat jemand von Euch bereits Tests gemacht, was ist dabei herausgekommen?

==========================
Die Installation unter Ubuntu (32bit) ist denkbar einfach:
Weiterlesen »

Written by Michael Kliewe

November 5th, 2010 at 12:32 am

PHP und HTTP AUTH bei 1und1 Webhosting

without comments

Um das Zend Framework in der Webhosting-Umgebung bei 1und1 ans Laufen zu bekommen, gibt es ein paar Kleinigkeiten zu beachten:

Als erstes muss man bei 1und1 in der .htaccess-Datei angeben welche PHP-Version man benutzen möchte. Dies macht man mit der Zeile

AddType x-mapp-php5 .php

Außerdem muß man noch die folgenden 2 Zeilen hinzufügen, sonst erhält man einen 500er Fehler:

Options -MultiViews
RewriteBase /

Die RewriteBase gilt es natürlich anzupassen falls das Projekt über einen anderen Pfad erreicht werden muss.

Da PHP bei 1und1 als CGI läuft, muß man für die HTTP-Authentifizierung auch noch einen kleinen Workaround einbauen:

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Damit wird die Authentifizierungsinformation in die Variable $_SERVER['REDIRECT_HTTP_AUTHORIZATION'] geschrieben. Das sieht dann ungefähr so aus:

echo $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
//  Basic: d2lraTpwZWRpYQ==

Das ist die Base64-Darstellung von “Username:Passwort”.

Die entgültige .htaccess sieht dann so aus:

AddType x-mapp-php5 .php
Options -MultiViews

RewriteEngine On
RewriteBase /

# workaround for 1und1 php cgi mode
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Und so kommt man an Username + Passwort heran:

if (isset($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
 list($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) = explode(':' , base64_decode(substr($_SERVER['REDIRECT_HTTP_AUTHORIZATION'], 6)));
}

Written by Michael Kliewe

Februar 6th, 2010 at 10:53 am