Kategorien
Server Administration Webdeveloper Tools

Xampp Mails verschicken von localhost mit sendmail

Bei der lokalen Entwicklung unter Windows mit Xampp muss man natürlich auch Mails verschicken können und Tests durchführen.

Ohne eine Konfiguration von sendmail bekommt man unter Windows folgende Fehlermeldung:

mail() [<a href='http://www.php.net/function.mail'>function.mail</a>]: "sendmail_from" not set in php.ini or custom "From:"

Mit den folgeden Einstellungen ist es möglich SMTP Mails lokal zu versenden z.B. mit PHPMailer oder mit WordPress wp_mail().

Folgende Schritte sind nötig dafür um über Sendmail Mails zu verschicken, welches in Xampp mitgeliefert wird:

1. In der xampp/sendmail/sendmail.ini muss ein gültiges E-Mail Konto angegeben werden, über welches E-Mails versendet werden sollen:

[sendmail]
smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
auth_username=my-gmail-id@gmail.com
auth_password=my-gmail-password

2. xampp/php/php.ini Einstellungen (entkommentieren):

[mail function]
; For Win32 only.
; http://php.net/smtp
SMTP = localhost
; http://php.net/smtp-port
smtp_port = 587

; For Win32 only.
; http://php.net/sendmail-from
sendmail_from = postmaster@localhost

; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
; http://php.net/sendmail-path
sendmail_path = "\"\xampp\sendmail\sendmail.exe\" -t"

; Force the addition of the specified parameters to be passed as extra parameters
; to the sendmail binary. These parameters will always replace the value of
; the 5th parameter to mail(), even in safe mode.
;mail.force_extra_parameters =

; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename
mail.add_x_header = Off

; Log all mail() calls including the full path of the script, line #, to address and headers
mail.log = "\xampp\apache\logs\php_mail.log"

Damit wird aktiviert, dass ein Fehler Log geschrieben wird.

Danach muss der Apache neu gestartet werden und nun können mit dem PHP mail()-Befehl E-Mails verschickt werden von Xampp unter Windows..

Mögliche Fehler aus dem Sendmail Error Log: sendmail.log

errormsg='cannot connect to localhost, port foo: Permission denied'

Kann über den Port keine  Mail versendet werden, es kann durch einen Alternativen Port gesendet werden, wie z.B. bei einem Hotmail Account

[sendmail]
smtp_server=smtp.live.com
smtp_port=25
smtp_ssl=tls
tls_certcheck off
error_logfile=error.log 
debug_logfile=debug.log 
auth_username=foo@hotmail.com 
auth_password=my-hotmail-password
Kategorien
Server Administration

SVN Server unter Ubuntu Konsole installieren und einrichten

Wer ein schickes SVN benötigt, kann dies auf der Konsole über SSH ganz einfach installieren:

apt-get install subversion

Dann kann ein neues Verzeichnis namens svn angelegt werden vorzugsweise im Ordner /srv/ (=Services).

mkdir /srv/svn

und ein Repository erzeugt werden darin

Kategorien
WordPress

WordPress Pagination funktioniert nicht

Wenn die Paginierung/Pagination nicht mehr funktioniert, kann das an einem Aufruf der Funktion query_posts() liegen, da diese den Main-Loop verändert.

Anstelle der Funktion sollte get_posts() verwendet werden.

Kategorien
Yii Framework

PhpStorm für Yii konfigurieren

Für das Coden von Yii mit PhpStorm sollte aus Effizienzgründen folgenden Einstellungen vorgenommen werden:

Code Completition aktivieren

Eine Anleitung gibt es hier.

Das Yiistorm Plugin installieren

Es dient zur einfachen Navigation von Controller zu View und mehr. Es muss lediglich die YiiStorm.jar in das PHPStorm Verzeichnis kopiert werden und die IDE neu gestartet werden.

Danach kann man z.B. direkt zum view File navigieren mit Strg+Mausklick in einem Controller-Aufruf wie:

        $this->render('index');
Kategorien
Server Administration

Host Europe Domain Packet umziehen DNS Server ändern

Folgende Schritte sind nötig um seine Domain von einem Webpack auf einen Server von Host Europe um zuziehen:

Im Plesk Server-Adminstration:

  • Website und Domains auswählen
  • Button Add new Domain
  • Domain Name ausfüllen: xxx.de und Document root: httpdocs/myDomain
  • Anlegen
  • angelegte Domain in Liste unten finden und auf das Icon mit den beiden Fähnchen klicken (Change DNS Zone Settings)
  • 2 Nameserver Einträge hinzufügen: Add Record Button betätigen
    1. Record Type NS, Name server: IP des Servers (lvpsxx-xxx-xx-xxx.dedicated.hosteurope.de)
    2. Record Type NS, Name server: IP des Host Europe DNS Servers  (ns2.hans.hosteurope.de)
  • löschen des Eintrags:
    domain.com NS ns.domain.com.

Alle Änderungen bestätigen 2 mal bestätigen.

Em Ende Apply DNS Template Changes.

Neu: Zonentransfer/AXFR freigeben in Plesk: In den allgemeinen DNS-Einstellungen finden Sie unter „Settings/Einstellungen > DNS-Template-Settings/DNS-Template-Einstellungen“ den Punkt „Transfer Restrictions Template/Transferbeschränkungen-Template“ (Plesk 9: „Start > DNS-Einstellungen > Transferbeschränkungen-Template“). Damit unsere Nameserver die DNS-Einstellungen von Ihrem Server übertragen dürfen geben Sie dort bitte das Netz 80.237.128.0/24 frei.

Im kis.hosteurope.de

  • vor der Domain ein Häckchen setzen und die Domain auf „als Reseller verwalten“ setzen: Link
  • vor der Domain ein Häckchen setzen und updaten auswählen
  • Nameserver anklicken und weiter
  • Primary Server: lvpsxx.xx.xx.xxx.dedicated.hosteurope.de
  • Secondary Nameserver: AUTO
  • bestätigen und nochmal“Updates ausführen“ bestätigen

Zur Kontrolle kann der DNS Health Online Dienst genutzt werden.

Es ist wichtig zu wissen, dass

Bitte beachten Sie, dass es 24 – 48 Stunden dauern kann, bis die neuen Einträge in der jeweiligen Whois ersichtlich sind und die Domain erreichbar ist.

Der offizielle Guide von Host Europe zu dem Thema ist hier.

Kategorien
Yii Framework

Yii Installation und Hallo Welt

yiiDas Yii Framework für PHP ist zur Zeit das beste Framework für Web Applikationen, wenn man der Meinungen von vielen Freelancern und phpframeworks.com vertraut.

Die Vorteile von Yii

  • einfacher Einstieg: keine neue Templating oder Konfigurationssprache nötig
  • einfache Konfiguration durch Default Werte: die Konfiguration muss nur bei speziellen Aufgaben angepasst werden (convention over configuration)
  • High Perfomance optimiert
  • sehr hohe Code Wiederverwendbarkeit
  • MVC
  • Extensions: unbegrenzte Anzahl von Komponenten, die einfach installiert werden können, wie z.B. eine User-Verwaltung mit Login, Registrierung usw. yii-user extension
  • RESTful und SOAP Web Services
  • DAO, Active Record, Caching, I18N Mehrsprachigkeit

Unterstütze Datenbank Systeme

  • MySQL ab 4.1.
  • PostgresSQL 7.3.
  • SQLite 2 und 3
  • Microsoft SQL Server ab 2000er Version
  • Oracle

Die Installation von Yii

Kategorien
WordPress

WordPress Posts mit Custom Field finden

Mit einem einfach Query lassen sich Posts mit einem bestimmten custom-field suchen und ausgeben. Die Posts werden zusätzlich nach dem Erscheinungsdatum sortiert.

$my_custom_field = 'my_cool_custom_field';

$queryCustomField = new WP_Query(
    array (
        'meta_key' => $my_custom_field,
        'orderby' => 'date',
        'order' => 'DESC',
        'posts_per_page' => 5,
        'post_status' => array( 'publish')
    )
);

while ($queryCustomField->have_posts()) :;
    $queryCustomField->the_post();
    $my_custom_field = get_post_meta($post->ID, $my_custom_field, true);
endwhile;

wp_reset_postdata();
Kategorien
WordPress

WordPress: Kategorien ermitteln mit den meisten Artikeln innerhalb x Tage

Um eine solche Abfrage zu realisieren, braucht es ein wenig MySQL in Verbindung mit WordPress. Mit der Funktion getCategoriesWithMostArticlesInLastDays() kann man die beliebtesten X Kategorien innerhalb der letzten Y Tage bestimmen:

function getCategoriesWithMostArticlesInLastDays($categoriesCount, $lastDaysCount)
{
    global $wpdb;
    $querystr = "
    SELECT $wpdb->terms.name AS categoryName,COUNT($wpdb->terms.term_id) AS countCategory, $wpdb->terms.term_id as categoryId
    FROM $wpdb->posts
        LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id)
        LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
        LEFT JOIN $wpdb->terms ON ($wpdb->terms.term_id = $wpdb->term_taxonomy.term_id)
    WHERE
        $wpdb->posts.post_status = 'publish'
        AND $wpdb->posts.post_type = 'post'
        AND $wpdb->posts.post_date > TIMESTAMP(DATE_SUB(NOW(), INTERVAL $lastDaysCount DAY ))
        AND $wpdb->term_taxonomy.taxonomy = 'category'
    GROUP BY $wpdb->terms.term_id
    ORDER BY COUNT($wpdb->terms.term_id) DESC
    LIMIT $categoriesCount
";
    $categoriesWithMostArticlesInLastDays = $wpdb->get_results($querystr, ARRAY_A);
    foreach($categoriesWithMostArticlesInLastDays as  $key => $category)
    {
        $categoriesWithMostArticlesInLastDays[$key]["link"] = get_category_link($category['categoryId']);
    }
    return $categoriesWithMostArticlesInLastDays;
}
Kategorien
Server Administration

PHP und MySQL auf Root Server updaten SSH unter Ubuntu

Für einen frisch aufgesetzten Server lohnt es sich die aktuellste Version von MySQL und PHP zu installieren, falls diese noch nicht vorinstalliert sind.

PHP und MySQL updaten

Bestehende PHP Installation kann man mit dem folgenden Befehl finden:

php -v

Bei meinem Server war u.a. zu lesen:

PHP 5.3.2-1ubuntu4.18 with Suhosin-Patch (cli) (built: Sep 12 2012 19:12:47)

Also ist ein Update sinnvoll auf die neuste PHP Version 5.4.12. Dafür gibt es ein praktisches Tutorial, was bei mir ohne Probleme funktioniert hat. Damit wird sowohl MySQL, PHP und Apache auf die neuste Version geupdatet mit ein paar einfach Befehlen.
Dies kann kontrolliert werden durch erneutes php -v

PHP 5.4.12-1~lucid+1 (cli) (built: Feb 25 2013 18:20:00)

Sicherheits Konfiguration

Kategorien
Webdeveloper Tools WordPress

WordPress Tools: Speakreader

Ein interessanter Service für barrierefreie Webseiten: der Speakreader für das automatische Vorlesen einer Seite und als Cloud-Service ohne Aufwand:

  • schnell installiert, WordPress etc. als Plugin downloadbar
  • Cloud basiert
  • Barrierefreiheit +
  • nicht kommerziell: kostenlos,
  • kommerziell auf Anfrage…