Schlagwort-Archive: PHP

WordPress und XAMPP tunen

XAMPP ist lokal und in der Standardausführung nicht sehr schnell. Daher lohnt es sich, Hand anzulegen.

Zunächst müssen wir wissen, wie langsam (oder schneller) unser System läuft. Dazu editieren Sie die WordPress Template Datei »footer.php«:

Direkt über </body> fügen Sie Folgendes ein:

<?php echo $wpdb->num_queries; ?> database queries in <?php timer_stop(1); ?>

Spielen Sie am besten ein bisschen herum, um ein Gefühl für »gute« Werte und Zeiten zu erhalten.

Laden und aktivieren Sie verschiedene Plugins, um zu prüfen, wie unterschiedlich sich die Werte entwickeln.

Bei besonders vielen SQL-Statements (auch Queries genannt), lohnt es sich, die Plugins schrittweise zu deaktivieren und zu prüfen, ob schlecht programmierte Plugins mit zu vielen Datenbankabfragen nicht durch Alternativen ersetzt werden können
Besonders verdächtig sind meiner Erfahrung nach Plugins, die die letzten Kommentare oder vergleichbare Artikel anzeigen, da diese bei jedem Aufbau der Seite generiert werden (wenn kein Cache läuft).

Testen Sie auf alle Fälle ein Cache-Plugin (ich empfehle wegen der einfachen Wartbarkeit wp-supercache). Ein Cache-System speichert bereits generierte HTML-Seiten in einen Zwischenspeicher ab, so dass diese nicht immer wieder neu generiert werden müssen.
Für Entwickler empfehle ich noch das Plugin »Debug Queries«. Dieses listet alle generierten SQL-Statements auf der Frontend-Seite auf. Dazu muss noch in der Datei »wp-config.php« was angepasst werden:



define(‚SAVEQUERIES‘, true);

Empfohlene Einstellungen

php.ini

Ort: C:\Programme\xampp\php\php.ini


memory_limit = 1024M

my.ini

Ort: C:\Programme\xampp\MySQL\bin\my.ini



key_buffer = 256M

max_allowed_packet = 16M

table_cache = 512

sort_buffer_size = 4M

read_buffer_size = 4M

read_rnd_buffer_size = 8M

net_buffer_length = 2M

innodb_buffer_pool_size = 256M

Wenn Sie merken, dass der Server langsam ist, können Sie in phpMyAdmin unter »Status« überprüfen, welche Parameter momentan Probleme bereiten. Diese werden rot hinterlegt. Anschließend sollte der Speicherplatz dafür erhöht werden.

Zur gezielteren Analyse muss man natürlich WP-Supercache zumindest für Admins deaktivieren, weil die Ergebnisse sonst verfälscht werden.

Und nicht vergessen: Es klappt nur, wenn man Apache und/oder MySQL nach jeder Änderung neu startet.

Zum Nachschlagen

WordPress Quick: Place addthis manually

You like the addthis plugin for WordPress? But prefere to place it manually?

Open your template file, e.g. “single.php”, and place this where you want:


<?php do_action( 'addthis_widget', $url, $title, 'share_counter');? >

You can replace “share_counter” with any other stile you like. It’s just the button style I like most.

XAMPP – Entwicklungsumgebung für Apache, MySQL, PHP auf Windows – Tutorial

XAMPP ist eine Distribution von Apache, MySQL, PHP und Perl, die sich (fast) per Knopfdruck installieren und wenig Wünsche übrig lässt.

Ich zeige hier eine kleine Anleitung, die ich selbst auch nutze bei Neuinstalationen. Den Abschluss bildet eine Sammlung von Links Hinweisen zu nützlichen Ergänzungen.

Schritt 1 – Installation

Xampp-Home Xammp-Windows

Ich empfehle die EXE-Datei. Wir können beruhigt nach c:\programme\xampp installieren. Es ist nicht notwendig, dass C-Verzeichnis vollzumüllen. Alle Programme und zusätzliche »Addons« laufen dort problemlos: Eine Fehlermeldung (»xampp component status check failure«) beim Aufruf des XAMPP Control Panel kann ignoriert werden. Wen diese Meldung nervt, kann Folgendes tun:

  1. Registry Editor starten und den Schlüssel
  2. HKEY_LOCAL_MACHINE\SOFTWARE\xampp\Install_Dir aufrufen
  3. Den dort eingetragenen Wert ändern zu: »C:\xampp«. Damit sollte die unglückselige Fehlermeldung nicht mehr auftauchen.

Die Meldungen der Firewall sollten sie akzeptieren, sonst tauchen Sie immer wieder auf. Warum die Firewall von Microsoft Zugriffe auf den eigenen Rechner unterbindet, kann wohl nur Bill Gates selbst erklären.

Schritt 2 – Es geht los

Wir starten das XAMPP Control Panel. Die Funktionen dort sollten selbsterklärend sein. Wenn man die wichtigsten Komponenten Apache und MySQL gestartet hat, kann man das Control Panel in den Hintergrund bzw. in die Systray wegklicken.

Die Konfiguration von XAMPP und seinen Komponenten erfolgt in verschiedenen Konfigurationsdateien. Eine Auflistung findet sich weiter unten.

Wir prüfen jetzt, ob alles erstmal geklappt hat. Dazu starten wir Apache, MySQL und Mercury. Mercury ist ein Mailserver, den man nicht unbedingt braucht, aber die Funktionsfähigkeit sollte wenigstens einmal getestet werden.

Nehmen Sie ihren Browser und laden Sie die URL »http://localhost«. »Localhost« ist eine Abkürzung für ihren eigenen Rechner bzw. für die Adresse ihres eigenen Rechners. Sie können auch »http://127.0.0.1« eingeben.

Wenn der erste Aufruf erfolgreich war, dann würde ich jetzt einige Änderungen in der php.ini (der Konfigurationsdatei für den PHP-Interpreter) vornehmen. Die Datei befindet sich unter »C:\Programme\xampp\php\php.ini«.

Passen Sie dort an bzw. entkommentieren folgendes:

  • short_open_tag = On
  • extension=php_curl.dll
  • variables_order = “EGPCS”
  • error_reporting = E_ALL

Damit die Änderungen Wirkung zeigen, muss Apache natürlich neu gestartet werden. Das erledigen Sie über das Control Panel.

Sie sollten auch nicht vergessen, den Sicherheitscheck auszuführen. Die Punkte dort sind selbsterklärend. Im Allgemeinen sollte es aber reichen, wenn Sie für MySQL einen root-Nutzer anlegen.

Schritt 3 – Warm werden mit XAMPP

Einige wichtige Standardprogramme bzw. Webapplikationen werden schon mitgeliefert. Am Anfang dürfte das wichtigste wohl phpMyAdmin sein. Hierbei handelt es sich um den am weitesten verbreiteten Web-Client zur Verwaltung von MySQL-Servern. Bei XAMPP wird er gleich mit ausgeliefert http://localhost/phpmyadmin/.

Den »root«-Nutzer sollte man tunlichst nur nehmen, um Datenbanken oder neue Nutzer anzulegen. Für neue Projekte, bspw. WordPress, erzeugt man einen Nutzer und wählt die Option »Erstelle eine Datenbank mit gleichem Namen und gewähre alle Rechte«.

Schritt 4 – Einrichtung des Mailserver Mercury

Diesen Mailserver kann man nutzen, wenn man Applikationen schreibt, die Mails verschicken, z.B. Newsletter. Allerdings ist dieser Server – wie das gesamte XAMPP-Projekt auf Windows – nur für Entwicklungsumgebungen ausgelegt. Auf Produktivsystemen sollte man m.M. nach lieber auf Linux bzw. LAMPP zurückgreifen.

Bei richtiger Programmierung sollte man ohne Probleme alle Skripte in PHP auf allen System, egal ob Windows mit Internet Information Server (IIS) oder Linux mit Apache nutzen können.

Den Admin-Bereich von Mercury erreicht man über den Admin-Button in XAMPP Control Panel. Hier gehen wir folgende Schritte durch:

  1. Mercury-Webserver deaktivieren: Mercury|Configuration|Protocol Modules|MercuryB HTTP Haken entfernen und Mercury Neu starten
  2. Configuration|Mercury Core Modul|General Internetname for this system: localhost
  3. local mailbox directory path: C:\PROGRAMME\XAMPP\MERCURYMAIL\MAIL\~N
  4. Username of Postmaster: Admin
  5. Configuration|Mercury Core Modul local domains: localhost, localhost.net, localhost.com, localhost.org
  6. Configuration|Mercury Core Modul|General: Suppress validation of »FROM« field (Haken setzen)
  7. Configuration|MercuryS SMTP Server|General: Listen on TCP/IP Port:25
  8. IP-Interface to Use: 127.0.0.1
  9. Configuration|MercuryS SMTP Server|Connection Control: Add restriction: Allow Connections 127.0.0.1-127.0.0.1 (keine Haken setzen)
  10. Configuration|MercuryS POP Server|General: Listen on TCP/IP Port:110
  11. IP-Interface to Use: 127.0.0.1
  12. Configuration|MercuryS POP Server|Connection Control: Add restriction: Allow Connections 127.0.0.1-127.0.0.1 (keine Haken setzen)
  13. Configuration|MercuryI IMAP4 Server|General: Listen on TCP/IP Port:143
  14. IP-Interface to Use: 127.0.0.1
  15. Configuration|MercuryI MAP4 Server|Connection Control: Add restriction: Allow Connections 127.0.0.1-127.0.0.1 (keine Haken setzen)

Auch wenn Mercury nicht danach verlangt, sollte man nach Änderungen in der Konfiguration den Server nochmal neu starten.

Damit nun über XAMPP auch tatsächlich Mails verschickt werden können, muss man in der php.ini noch etwas nachtragen.

Suchen Sie nach »[mail function]« und ergänzen folgendes:

  • SMTP=localhost
  • smtp_port=25
  • sendmail_from = admin@localhost

Schritt 5 – Wohin mit den Dateien?

Wenn Sie ein neues Web-Projekt starten, dann legen Sie einen neuen Ordner in »c:\Programme\xampp\htdocs\« an und kopieren dorthin alle ihre Dateien.

Anhang

Wichtige Programme

  • Notepad++ – Ein sehr guter  Gratis-Editor mit Projektverwaltung
  • HeidiSQL – Ein Desktop-Client der ein schnelleres Arbeiten mit MySQL-Datenbanken ermöglichkeit als phpMyAdmin
  • mysqldumper – Skriptsammlung zum Sichern und Einspielen kompletten MySQL-Datenbanken

Die wichtigsten Konfigurationsdateien

Den genauen Standort der einzelnen Dateien finden Sie auch unter http://localhost/xampp/phpinfo.php

  • \xampp\apache\conf\httpd.conf – Apache Konfiguration
  • \xampp\MercuryMail\mercury.ini – Mercury Konfiguration
  • \mysql\bin\my.ini – MySQL Konfiguration
  • \xampp\php\php.ini – PHP Konfiguration
  • \xampp\phpMyAdmin\config.inc.php – phpMyAdmin Konfiguration
  • \xampp\sendmail\sendmail.ini – Sendmail, als alternative zu Mercury

Die wichtigsten Pfade

  • \xampp\htdocs
  • \xampp\MercuryMail\MAIL
  • \xampp\mysql\data

Fehlersuche

Es empfiehlt sich – wie überall – die Logfiles zu checken. Nützlich ist dabei eine Software wie mtail, die Logfiles beobachtet und nur die Änderungen in Echtzeit anzeigt.

Die wichtigsten Logfiles

  • \xampp\apache\logs\error.log
  • \xampp\FileZillaFTP\Logs
  • \xampp\MercuryMail\LOGS\
  • \xampp\mysql\data\mysql.err
  • \xampp\sendmail\sendmail.log

Wenn es noch Fragen gibt, immer her damit.

Give feedback on errors with the WordPress Settings API

After working with the WordPress Settings API I first found no easy way out to give feedback on errors.

As a lot of you I was reading the tutorials from David Gwyer, Ozh, BobGneu and Otto, but none of them gave proper information on how to pass the error messages to the user when theie values fail the validation test.

BUT…. I found a somehow quick but practicable way to bypass the lack of user validation information.

Take the sanitize function you call from register_setting which is responsible to check the values:


<?php

function myplugin_options_validate($input) {

// use  $input['error'] and $input['message'] for error messages

$input['error'] = false;

$input['message'] = '';

# do some regex validation

if (1=!1) { // yes we have an error

$input['error'] = true;

$input['message'] = 'you have got an error: 1!=1';

}

return $input;

}

?>

Now go to the function which creates the settings form (most called via add_options_page) and check with $_GET[‘settings-updated’].


<?php

function myplugin_options_page() {

if ($_GET['settings-updated'])  { // yes, settings have been changed

if ($_GET['settings-updated'] && $options['error']) {
print '<div>'.$options['message'].'</div>';
}

}

?>

That’s it.

WordPress Plugins Upload with Subversion, Tortoise and Windows Tutorial, Part 1

Many of us, who had programmed a little WordPress plugin are not familar with Unix/Linux. Maybe they never even used a CLI before. Therefor I’d like to show how you can upload your developed plugins to the WordPress.org repository from Windows without any command line hustle.

But maybe you should read this before:

We are going to use the best Subversion Windows Tool, which is Tortoise. It will integrate seamlessly with Windows Explorer, so no need to enter any complicated commands by hand.

Installing Tortoise and first steps

  • Register and login at WordPress.org
  • If you want to add your plugin to the repository you have to apply for space on the WordPress.org repository. Now wait for a confirmation mail. The last time it took me three days.
  • Download Tortoise and use default parameters to install. You will have to restart Windows afterwards.

Adding your files to the wordpress.org repository

  • Create a folder on your local drive, e.g. “…/Wordpress/plugins”
  • Right click on folder and chose “SVN checkout”
  • Enter the URL of repository which you receive in the confirmation mail: http://svn.wp-plugins.org/your-plugin-name, e.G. http://svn.wp-plugins.org/geotagmapper (this is one of my plugins) and press OK. You will receive some checkout information.
  • Copy the plugin files you created to the local folder. Put everything in the trunk/ directory for now.
  • Let subversion know you want to add those new files to the repository. Select every file of your plugin, right click, “TortoiseSVN/Add…
  • Now check in the changes back to the central repository. Select the file, right click, “SVN Commit…“, then give a message to the check in.

Done. You just addedd your plugin to he wordpress.org plugin repository. Wait 15 minutes for the system to automatically wrap your files into a zip file and put it on the wordpress plugin page.

By the way, did you see how the icons changed? This was done by Tortoise to show you the different update status of every file and folder in a glance.

In part 2 of my tutorial to come I will give you more details about how to handle different versions of your plugins and we will look at some of the most asked questions and problems.