Das Putzlowitsch Test- und SEO-Blog

WordPress Update 2.9

Ja, ich habe es getan. Einfach bei den Werkzeugen->Autoupdate auf [Automatisch aktualisieren] geklickt und schon war ich nach kurzer Zeit auf dem aktuellen Stand (WP 2.9 de). Nur eine kleine Warnung wurde mir angezeigt:

Warning: gzuncompress() [function.gzuncompress]: data error in /mnt/…/wp-includes/http.php on line 1831

Aber direkt danach steht „WordPress wurde erfolgreich aktualisiert„. Na dann will ich das mal glauben. Ich habe auch noch keine Probleme feststellen können.

Nun werde ich mich erstmal umsehen und gucken, was es so Neues gibt…

Weitere Artikel mit Bezug zu diesem:
3 Kommentare »

Studenten-Spam, eine neue Masche?

Beim ersten Kommentar hier war es mir gar nicht aufgefallen. Die Seite, die der Kommentator als Homepage angegeben hat, sieht erstmal unverfänglich aus. Zumal sie auf einen Uni-Account bei der TU-Dresden verweist. Stutzig wurde ich bei einem weiteren Kommantar auf Putzlowitsch, hier lag die Homepage bei der HTW-Berlin. Verblüffend ähnlich war aus meiner Sicht der Aufbau der beiden Seiten. Es gibt jeweils eine Homepage und dann eine weitere Seite „1. Story“ bzw. „Story Nr.1“. Zufall?

Bei beiden Seiten ist das „Design“ eher etwas altbacken, technisch mit Tabellen realisiert. Das wundert mich besonders bei Christoph, der ja vorgibt, im vierten Studienjahr Informatik zu studieren. Abderrahim hingegen studiert schon im fünften Studienjahr im Fach „Techik“, richtig, nur Technik. Komisch auch, daß Christoph als E-Mail-Adresse Christian@ verwendet. Aber egal, das ist alles vielleicht nur Zufall.

Wenn man sich nun die Seiten von Christoph und Abderrahim ansieht, fallen weitere Gemeinsamkeiten auf. Beide berichten über Stromanbieter und verlinken auf Stromsuche. Beide schreiben über Gutscheine und Coupons und verlinken auf Gutscheindorado. Und jetzt kommts, beide Kommentare wurden von derselben IP-Adresse abgesetzt, Anbieter ist Kabel-Deutschland (dynip.superkabel.de). Aber auch das ist möglicherweise alles nur Zufall :-)

Was mich eher interessieren würde, wie die Seiten bei den Unis dort hinkommen. Werden für ein paar Euro Studenten gekauft, die dann Ihren Uni-Zugang dafür hergeben. Oder wurden die Accounts geknackt oder gibt es sonst eine Lücke, die es ermöglicht, auf Uni-Servern Seiten abzulegen?

Na mal sehen, ob und wie das weitergeht…

6 Kommentare »

Mehr Bilderdiebe

Bilderdieb am PrangerEigentlich sind es nicht wirklich mehr Bilderdiebe geworden, der bekannte Bilderdieb taucht nur mit einem anderen Gesicht, sprich weiteren Subdomains auf. Nach meinem Äpfelbild ist nun auch mein Fenchel dort zu finden, der Fenchel von einem gewissen Kochbuch (Stichwort: Brötchen) übrigens auch. Die haben mittlerweile auch ein Ersatzbild eingebaut.

So muß ich nun nicht nur freeimages-de aussperren, sondern auch noch images-de. Oder doch gleich bloggum insgesamt? Ich weiß nicht…

Mit Dieben ist man früher nicht zimperlich gewesen. Die wurden kurzerhand an den Pranger gestellt und hatten da nichts zu lachen. Gut, die moderne Form des digitalen Prangers gibt es ja auch und das kann manchmal noch schlimmere Folgen haben.

Weitere Artikel mit Bezug zu diesem:
2 Kommentare »

Strato PowerPlus mit SpeedPlus – Fehler bei der Remote-Adresse (REMOTE_ADDR)

Nachtrag am 22.01.2010:

Seit heute scheint das weiter unten geschilderte Problem mit der Remote-Adresse nicht mehr zu bestehen. Die Einträge in der .htaccess-Datei oder sonstige Eingriffe sind daher möglicherweise nicht mehr erforderlich.
Bei mir ist das Problem verschwunden, aber offensichtlich noch nicht generell.

Nachtrag am 01.03.2011:

Nach aktuellen Informationen ist das Problem wohl nun doch endgültig behoben worden. Die Einträge in der .htaccess-Datei oder sonstige Eingriffe sind daher nicht mehr erforderlich.

Seit Anfang Dezember 2009 bin ich mit meiner Schnurpsel-Seite wieder zurück zu Strato umgezogen. Ganz weg war ich ja nicht, ich hatte nur den Hostnamen bei einem anderen Anbieter aufgeschaltet. Aber seit es nun SpeedPlus bei Strato gibt, bin ich nun doch wieder zurückgekehrt.

Die Geschwindigkeit ist wirklich gut. Antwortzeiten von ungefähr 0,5 Sekunden gegenüber 3 bis 4 Sekunden vorher sind für ein PHP-Schwergewicht wie WordPress eine merkliche Verbesserung. Zudem wurde auch gleich das ohne-www-Problem beseitigt, in der Umgebungsvariable HTTP_HOST steht nun der tatsächlich im HTTP-Request angegebene host drin.

Die Remote-IP-Adresse (REMOTE_ADDR)

Neben allerlei anderen interessanten Informationen wird bei jedem Webseitenaufruf auch die IP-Adresse des Aufrufers in einer Umgebungsvariablen vermerkt. Auf diese kann z.B. mit Skriptsprachen wie PHP oder Perl als Variable „REMOTE_ADDR“ zugegriffen werden. Diese Remote-Adresse ist z.B. für statistische Auswertungen interessant oder kann beim Aussperren unerwünschter Zugriffe (Spam-Bots) helfen.

Allerdings zählt diese IP-Adresse ja nach Auffassung und Auslegung der Gesetze zu den personenbezogenen Daten und dürften dann eigentlich nicht gespeichert werden. Bei Strato werden die IP-Adressen in den den Kunden zur Verfügung gestellten Serverlogdateien in anonymisierter Form gespeichert. Auch die im Kundenmenü anzeigbare Webseiten-Statistik greift auf diese Daten zurück.
So können die Zugriffe zwar unterschieden aber nicht einem konkreten Anschluß zugeordnet werden

Mehr Geschwindigkeit mit SpeedPlus

Wenn ich die Grafik zu SpeedPlus bei Strato richtig deute, werden die Zugriffe nicht mehr direkt auf die Webserver geroutet, sondern von einem Loadbalancing-Cluster lastabhängig verteilt.
Diese Verteilung funktioniert vermutlich ähnlich wie bei einem nicht-transparenten Proxy, denn für den Webserver sieht es so aus, als würde der Strato-interne Server die Seite anfordern. Genau deshalb steht in der Remoteadresse nicht mehr die IP-Adresse des Aufrufers drin, sondern eine 81.169.145.xxx drin.

Komischerweise tritt der Effekt aber nicht bei allen Domains auf, nur die Hälfte meiner Domains (inkl. Subdomains) bei Strato ist davon betroffen.

Die richtige Remoteadresse ermitteln und setzen

Ich wäre ja nicht Schnurpsel, hätte ich nicht bereits eine Lösung für das Problem parat :-)
Die richtige IP-Adresse findet man im Request-Header-Feld X-Forwarded-For, daß heißt der Strato-Server trägt hier die Adresse ein, von der er die Anforderung erhalten hat.

In Skriptsprachen wie PHP oder Perl steht diese Variable als „HTTP_X_FORWARDED_FOR“ zur Verfügung. Hier könnte man sich die Remote-Adresse also einfach möglichst am Anfang (bei WP z.B. in der wp-config.php) der Abarbeitung in die REMOTE_ADDR eintragen, z.B. so:

if( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
  $ip_addr = @trim( @end( @explode( ",", $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) );
  if( '' != $ip_addr )
    $_SERVER['REMOTE_ADDR'] =  $ip_addr;
}

Hier kommen zwei wichtige Aspekte zum Tragen, denn in „X-Forwarded-For“ können mehrere durch Komma getrennte IP-Adressen stehen, sofern unterwegs mehrere Proxies durchlaufen wurden. Außerdem soll die Adresse nicht überschrieben werden, falls kein X-Forwarded-For-Feld existiert oder aus anderem Grund nicht ermittelt werden kann.

Für Perl könnte das etwa so aussehen:

if( $ENV{'HTTP_X_FORWARDED_FOR'} ne "" )
{
  my @ip_list = split(/,/, $ENV{'HTTP_X_FORWARDED_FOR'});
  $ENV{'REMOTE_ADDR'} = $ip_list[-1]; 
}

Nachteil ist hierbei natürlich, daß man alle Webapplikationen, die irgendwie die REMOTE_ADDR verwenden, entsprechend anpassen muß. Es geht aber auch noch einfacher und allgemeiner.

Umgebungsvariablen mit mod_setenvif setzen

Das Apache-Modul mod_rewrite kennen bestimmt viele WordPress-Nutzer, manch einer kennt vielleicht sogar mod_alias, aber vermutlich nur wenige haben schon mal etwas vom Modul mod_setenvif gehört. Es kommt auch ganz bescheiden und unspektakulär mit nur vier Anweiungen daher.

Mit dem Modul mod_setenvif hat man die Möglichkeit, Umgebungsvariablen abhängig von Request-Feldern zu setzen. Genau das brauchen wir hier. Wir haben das Request-Feld X-Forwarded-For und wollen abhängig davon die Umgebungsvariable REMOTE_ADDR setzen. Das Problem läßt sich mit ein bißchen Regular-Expression in einer Zeile in der .htacces erschlagen:

SetEnvIf X-Forwarded-For "(.+,)? *(.+)$" REMOTE_ADDR=$2

Optimalerweise steht diese Zeile ganz am Anfang einer .htaccess im Wurzelverzeichnis des Webpaketes. Dann wirkt sei auch auf alle Domains oder Subdomains, die ihr sichtbares Wurzelverzeichnis in einem Unterverzeichnis des Webspace haben.

Das schöne an diesem kleinen Eingriff ist, daß er auch auf das Serverlogfile und die Webstatistik wirkt. Im Logfile stehen nun wieder zwar anonymisierte, aber unterscheidbare Zugriffe und die Webstatistik zeigt nicht mehr 10000 Zugriffe von nur 5 Adressen an.

Ende gut, alles gut?

Mit ein bißchen Handarbeit kann man wieder mal einen Strato-Konfigurationsfehler ausbügeln. Andereseits ist die SpeedPlus-Plattform noch recht neu, da können solche Fehler schon mal auftreten. Ich habe das Problem auch bereits vor 10 Tagen an den Strato-Support gemeldet, warte aber immer noch auf die Antwort zu meinem Ticket. Scheint etwas komplizierter zu sein. Bis zur Strato-Problemlösung kann mein kleiner „Trick“ zumindest über die Zeit helfen.

7 Kommentare »

WordPress beim 1&1 Webhosting (1&1 Homepage)

In den aktuellen 1&1 Webhosting-Paketen „1&1 Homepage Perfect“, „1&1 Homepage Business“ und „1&1 Homepage Business Pro“ hat man neben der Nutzung eines 1&1-Fertigblogs auch die Möglichkeit, ein eigenes WordPress zu installieren. Mindestens eine MySQL-Datenbank und PHP können in diesen Hostingpaketen genutzt werden.

Damit das selbstinstallierten WordPress auch ordentlich funktioniert, sind einige Dinge zu beachten, die ich nachfolgend erkläre. In vielen Fällen verweise ich auf die 1&1-FAQ, da dort einzelne Schritte gut beschrieben sind.

Vorbereitung der Installation – Datenbank

Zunächst muß, falls nicht schon geschehen, eine neue MySQL 5 Datenbank angelegt werden. Wichtig sind hier die Daten, welche später in die Datei wp-config.php eingetragen werden müssen (Beispiele):

define('DB_NAME', 'db123456789');
define('DB_USER', 'dbo123456789')
define('DB_PASSWORD', 'rh473256');
define('DB_HOST', 'db1234.1und1.de');

Auf den ersten Blick sehen DB_NAME und DB_USER gleich aus, sind sie aber nicht. Beim User steht zwischen ‚db‘ und der Zahl ein kleines o (für Owner?). Zudem ist der Datenbank-Host eben nicht ‚localhost‘, sondern der nach dem Anlegen der Datenbank in der Übersicht angezeigte dbxxxx.1und1.de.

Vorbereitung der Installation – WordPress-Installationspaket

Die aktuelle deutsche WordPress-Version kann man sich hier herunterladen. In der Installationsanleitung werden als nächste Schritte das Entpacken der ZIP-Datei, Editieren der wp-config.php und das Hochladen aller Dateien per FTP genannt. Für 1&1 empfehle ich eine leicht veränderten, weil schnelleren Weg, der ohne zusätzliches FTP-Programm auskommt.

Mit dem 1&1-WebspaceExplorer wird die wordpress.zip-Datei, so wie sie ist, hochgeladen. Anschließend wird sie direkt auf dem Server entpackt. Beim Entpacken entsteht ein Verzeichnis wordpress, welches man nach eigenen Wünschen umbenennen kann.

Nun holt man sich per Download aus diesem Verzeichnis die wp-config-sample.php auf den Rechner, bennent sie in wp-config.php um, trägt die Konfigurationsdaten ein und lädt sie mit dem WebspaceExplorer in das WordPress-Verzeichnis auf dem Server.

Umstellung auf PHP 5

(nicht erforderlich bei den neuen Paketen SmartWeb L und Dual-Hosting!)
An erster Stelle ist die Umstellung auf PHP5 zu nennen. Mit PHP4 gibt es besonders im WordPress-Backend Probleme, beispielsweise beim Hochladen von Bildern über die Medienverwaltung. Wie man bei 1&1 erreichen kann, daß alle PHP-Skripte mit PHP 5 ausgeführt werden, ist auch in den 1&1-FAQ beschrieben. Man erstellt eine Datei .htaccess oder ergänzt eine bereits vorhandene Datei mit folgenden Zeilen:

AddType x-mapp-php5 .php
AddHandler x-mapp-php5 .php

Diese Datei kopiert man per FTP oder mit dem 1&1-WebspaceExplorer in das Wurzelverzeichnis der Webpräsenz

WordPress installieren

Nun kann man die WordPress-Installation wie in der Dokumentation beschrieben starten:

http://wp-example.net/wp-admin/install.php

Maximal nutzbarer PHP-Speicher (memory_limit) 32M

Auch wenn für den PHP-Speicher bei 1und1 40M angezeigt werden, so sind doch nur effektiv 32M nutzbar. Deshalb kann durchaus folgende Fehlermeldung auftreten:

Fatal error: Out of memory (allocated 33030144)
(tried to allocate 4600 bytes) in …

Das ist etwas anderes als:

Fatal error: Allowed memory size of 33554432 bytes exhausted
(tried to allocate 4650 bytes) in …

Der Fehler kann z.B. beim automatischen Update von WordPress vorkommen, obwohl WP intern das Speicherlimit auf 256M hochsetzt und das auch so angezeigt wird. Aber egal wie hoch man den Parameter memory_limit konfiguriert, es gibt bei 1&1 derzeit die Grenze bei 32 MB. Hier hilft nur, während des Updates den Speicherverbrauch zu reduzieren, indem man beispielsweise alle Plugins vorher deaktiviert und danach wieder aktiviert.

Auf eine Supportanfrage bei 1&1 bezüglich der 32M-Speichergrenze bekam ich folgende Antwort:

Effektiv liegt das von Ihnen nutzbare Speicherlimit bei 32 MB, da ein Teil der Ressourcen für die Ausführung von PHP selbst benötigt wird.

Nun ja, wirklich glauben kann ich das nicht.

Nachtrag:
Es gibt jetzt eine 1&1-Hilfe-Seite, die die Skript-Limits für die einzelnen alten und aktuellen Hostingpakete auflistet.
Bei den neuen 1&1-Dual-Tarife ist PHP5 standardmäßig aktiv und es gelten folgende Limits:

Memory Limit Scriptlaufzeit Anzahl Prozesse
Smart Web L 32 MB 10 Sec. 5
Dual Basic 60 MB 20 Sec. 10
Dual Perfect 60 MB 30 Sec. 15
Dual Advanced 80 MB 40 Sec. 15
Dual Unlimited 80 MB 60 Sec. 20

Bei den 1&1-Tarifen (ab Oktober 2013) gelten folgende Limits:

Memory Limit Scriptlaufzeit Anzahl Prozesse
Starter 30 MB 20 Sec. 10
Basic 60 MB 20 Sec. 10
Unlimited 80 MB 40 Sec. 15
Unlimited Plus 128 MB 60 Sec. 16
Unlimited Plus (4GB) 256 MB 60 Sec. 16

Bei den neuen 1&1-Tarifen (ab 2015) gelten folgende Limits:

Memory Limit Scriptlaufzeit Anzahl Prozesse
Starter 30 MB 20 Sec. 10
Unlimited 60 MB 20 Sec. 10
Unlimited Plus 80 MB 40 Sec. 15
Unlimited Pro 128 MB 60 Sec. 16

Hinweis: Das Speicher-Limit gilt für einen gestarteten Prozess. Es steht deshalb als PHP-Speicher weniger zur Verfügung, als hier in der Tabelle steht. Von den 60M im Paket Basic sind effektiv ca 55M als PHP-Speicher nutzbar.

PHP-Speichertest-Skript: Memory-Test PHP-Skript

28 Kommentare »