Geöffnete Dateien zu Linux Prozess finden

Mal wieder hatte ich das Glück mich auf die Suche nach einem Sicherheitsleck eines Linux Servers aufzuspüren. Mit dem kleinen aber mächtigen Befehl:
lsof -pid
kann man sich alle Dateien die ein Prozess derzeit geöffnet hat anzeigen lassen. Pid steht dabei für die Prozess ID und kann z.b. Mit „top“ herausgefunden werden.

Mit lsof kann man jedoch auch noch einiges mehr. So lassen sich mit
lsof -i alle aktiven Netzwerkverbindungen anzeigen. So findet man schnell Telnet Verbindungen.

Weiterlesen

htaccess: Immer auf Url mit TrailingSlash weiterleiten

Aus SEO Sicht ist es eine Unart wenn gleiche Inhalte unter unterschiedlichen URLs zu finden sind. Der böse duplicate Content.
Oft, und auch bei WordPress, gelangt man beim Aufruf einer URL mit und ohne abschließenden Slash auf den gleichen Beitrag – jedoch über unterschieldiche urls.

BSP:
https://schnipsellager.de/beitrag
https://schnipsellager.de/beitrag/

Abhilfe schafft dieser kleine HTACCESS Schnipsel. Danach werden alle URLs ohne abschließenden Slash umgeleitet.


<IfModule mod_rewrite.c>
 RewriteCond %{REQUEST_URI} /+[^\.]+$
 RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>

Weiterlesen

WordPress Admin Menü spinnt im Chrome 45 – Fix

Mit der Chrome Version 45 spinnt das Menü im WordPress Admin beim Hovern. Durch folgenden Schnipsel in der functions.php eures Themes könnt ihr die verursachende Animation deaktivieren und könnt eure Menü wieder wie gewohnt nutzen.


add_action('admin_enqueue_scripts', 'chrome_admin_fix');
function chrome_admin_fix() {
	if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Chrome' ) !== false )
		wp_add_inline_style( 'wp-admin', '#adminmenu { transform: translateZ(0); }' );
}

Weiterlesen

WordPress: Query nach Meta Wert sortieren

Mit den Benutzerdefinierten Feldern bei WordPress lassen sich tolle Sachen umsetzen. Und natürlich kann man auch genau nach diesen seine Query Basteln und sortieren.

 $options = array(
        'post_type' => 'geraete',
        'orderby' => 'rand',
        'posts_per_page' => 100,
        'meta_key' => 'preis',
        'orderby' => 'meta_value_num',
        'order' => 'ASC'
    );
    $query = new WP_Query($options);

Über den Parameter „orderby“ kann man mit den Werten meta_value oder meta_value_num festlegen ob eine numerische Variable sortiert werden soll.

Weiterlesen

PHP: Upload Limit erhöhen

upload limit
PHP hat einen Standardwert von 2MB für einen Dateiupload. Damit kann man heutzutage natürlich nicht viel anfangen und sprengt dieses Limit bereits mit einem Foto. Um das Upload LImit zu erhöhen gibt es verschiedene Wege:

1. PHP.ini

Also erste Möglichkeit könnt ihr die php.ini bearbeiten.  Diese Möglichkeit setzt für euren kompletten Server die Werte, also nicht immer die richtige Wahl.
Geht in die PHP.ini (/etc/php5/apache2/php.ini) und ändert die folgenden Werte:

upload_max_filesize = 10M
post_max_size = 10M

2. .htaccess

Weiterhin habt ihr die Möglichkeit die Upload Limits über die Htaccess einzustellen. Vorteil der HTACCESS Lösung: Upload Limits können für Ordner / Bereiche individuell festgelegt werden. Öffnet die .htaccess für den notwendigen Bereich und fügt folgendes ein:

php_value upload_max_filesize 10M
php_value post_max_size 10M

3. @ini set

Nicht immer aktiviert aber durchaus auch eine gängige Methode sind die ini_sets. Einfach innerhalb des Upload Scripts diese 2 Zeilen einfügen:

@ini_set( 'upload_max_size' , '10M' );
@ini_set( 'post_max_size', '10M');

4. eigene PHP.ini

Bei manchen Hostern auch durchaus gebräuchlich, sind eigene PHP.ini Dateien in den Verzeichnissen. Erstellt in euerm Scriptordner eine Datei mit dem namen „php.ini“ und fügt folgende Zeilen ein:

file_uploads = On
upload_max_filesize = 64M
post_max_size = 64M

upload_max_filesize = 64M
post_max_size = 64M

Weiterlesen

Linux: Besitzer auf www-data ändern

Wenn eine WordPress Installation reibungslos verlaufen soll, so ist es sinnvoll, dass der Dateibesitzer der hochgeladenen Dateien auch der User www-data ist. Gleiches gilt für Dateiuploads und Scripte bei denen mit PHP und Co eine Datei erstellt werden soll.

Mit dem kurzen Befehl setzt ihr alle Verzeichnisse, Unterverzeichnisse und Dateien in eurem /var/www/ Ordner auf den Nutzer und die Gruppe www-data.

chown -R www-data:www-data /var/www/

Weiterlesen

WordPress auf echten Cronjob umstellen

WordPress hat ein kleines Cronjob System integriert – Es erledigt bestimmte aufgaben in bestimmten Intervallen. So werden beispielsweise Updates im Hintergrund gesucht, der Cache geleert oder ein Email-Artikel erstellt. Die Aufgaben werden unauffällig im Hintergrund ausgeführt und sorgen für ein gut funktionierenden Blog.

Doch gibt es einen kleinen Schwachpunkt, die Ausführung findet nur statt wenn auch ein Besucher da ist. Denn bei jedem Besucheraufruf schaut der WP-Cron nach: Gibts Arbeit für mich? Fehlt natürlich der Besucher, dann gibts auch keine Ausführung der Aufgabe. Generell ist dies nicht weiter schlimm, sofern die Aufgaben nicht zeitlich gebunden sind. Möchte man aber z.b. exakt 00:00 Uhr seine Statistiken vom Vortag schreiben, dann wird es problematisch.

Die Abhilfe ist jedoch recht einfach, man legt einen echten Cronjob an und lässt diesen aller 30 Minuten den WordPress-Cronjob ausführen. Dann werden alle Aufgaben garantiert in gleichen Intervallen erledigt. Noch dazu kann man den normalen Wp-Cron der bei jedem Besuch im Hintergrund mitläuft deaktivieren – das spart nochmal etwas Rechenleistung.

WP-Cron deaktivieren
In der wp-config.php fügt ihr im oben Bereich folgende Zeile ein:

define('DISABLE_WP_CRON', true);

 

Cronjob einrichten

Damit die wp-cron.php von deinem WordPress auch regelmäßig ausgeführt wird musst du einen „echten“ Cronjob erstellen. Das machst du entweder bei einem Cronjobservice (z.B. cronjob.de) oder falls du Konsolen Zugang hast über einen Linux Cronjob.

Die Crontab öffnen

nano /etc/crontab


Jetzt eine neue Zeile erstellen

*/30 * * * *  wget -q - http://www.deinblog.de/wp-cron.php 

Der erste Block */30 steht für die Minuten. In dem Fall jede Minute die durch 30 ohne Rest teilbar ist, daher wird der Job 2 mal die Stunde ausgeführt. Möchte man es aller 5 Minuten ausführen steht dann */5. Man kann die gewünschten Minuten aber auch kommagetrennt auflisten, z.B. 0,15,30,45.

Weiterlesen

PHP: Alle Fehlermeldungen ausgeben

Auf der Suche nach einem Fehler kann man manchmal verzweifeln, doch oft liegt die Abhilfe sehr nahe. Mit einem Zweizeiler könnt ihr euch anzeigen lassen wo euer Fehler liegt.

error_reporting(E_ALL);
ini_set('display_errors', 1);


 
Ab jetzt werden alle Fehler ausgegeben. Jedoch ist es nicht unbedingt immer Ideal es dauerhaft aktiviert zu lassen, daher kann man es auch einfach Abhängig von einem GET Parameter machen.
Ruft ihr dann beim Entwickeln z.B. http://meineseite.de?debug=1 auf, so bekommt ihr die Fehlermeldungen angezeigt.

if(isset($_GET['debug']) && $_GET['debug'] == 1) {
   error_reporting(E_ALL);
   ini_set('display_errors', 1);
}

Weiterlesen

PHP: Array zu Object Array (Std) konvertieren

Du hast ein Array und brauchst es aber als Object? Oder du willst die Vorzüge vom Std Object nutzen? Mit dieser kleinen Funktion hast du in windeseile dein Array in ein schönes Object umgewandelt.

Die Funktion ruft sich rekursiv auf, somit können auch mehrdimensionale Arrays ohne Probleme in ein Object konvertiert werden.

function arrayToObject($arr) {
        $object = new stdClass();
        foreach ($arr as $key => $val) {
            if (is_array($val)) {
                $val = arrayToObject($val);
            }
            $object->$key = $val;
        }
        return $object;
    }

Weiterlesen