Copying sources and texts (also in parts) for publishing without our permission is NOT ALLOWED. We are fed up with finding our work on other sites (like stackoverflow).
Das Kopieren von Quellcode und Texten (auch in Auszügen) ist nicht erlaubt. Wir haben es gründlich satt, unsere Arbeit auf anderen Webseiten zu finden.

Copying for non-public usage is allowed.           Das private Kopieren und Benutzen ist natürlich erlaubt und erwünscht.
13. Jun 2012
Teaser

Linux: Rekursives “suchen und ersetzen” von Text in Dateien und Ordnern

Um auf einem Linux-System in Dateien und Verzeichnissen rekursiv Text/Texte ersetzen zu können, hilft Ihnen folgender Befehl:

find ./ -type f -print -exec sed -i 's/TextA/TextB/g' {} \;

Dabei ersetzen Sie bitte:
TextA mit dem zu suchenden Text und
TextB mit dem zu ersetzenden Text.

Beispiel:

Sie wollen in allen Dateien (inklusive den Dateien in den Unterverzeichnissen etc.) den Text “Test” durch “Muster” ersetzen lassen:

find ./ -type f -print -exec sed -i 's/test/muster/g' {} \;
10. Jun 2012
Teaser

PHP: fcgid nach PHP-Update plötzlich nicht mehr aktiv (suExec, suPHP)

Nach einem PHP Update auf einem Debian Linux Server (Debian Squeeze) wurden plötzlich alle PHP Skripte unter dem benutzer “www-data” ausgeführt. Und das obwohl in allen Konfigurationen der Aufruf über “fcgi” eingestellt war und vor dem Update alles auch einwadnfrei und richtig (nämlich unter dem Benutzernamen des virtuellen Servers) lief. Auch die Einstellungen in VirtualMin oder ISPCP (von anderen Benutzern berichtet) wurden nicht verändert und zeigten nach-wie-vor die PHP-Nutzung über fcgi (fcgid) an.

Erst nach einiger Suche fanden wir heraus, dass beim PHP-Update scheinbar das Linuxpaket “apache2-mpm-worker” durch das Paket “apache2-mpm-prefork” ersetzt. Warum weiß keiner.

Nach dem Befehl

apt-get install apache2-mpm-worker

arbeitete das ganze System wieder richtig und auch unter dem richtigen Benutzernamen über “fcgid”.

07. Jun 2012
Teaser

Apache: Lösung zu “VirtualHost x.x.x.x:80 overlaps with VirtualHost …”

Nach dem Update auf den Linux Debian Squeeze Server startet der Apache WebServer plötzlich nicht mehr. Die anderen Dienste (Postfix, Dovecot, …) laufen unverändert. In den Logdateien taucht dieser Fehler auf:

/etc/init.d/apache2 start

Reloading web server config: apache2
[Thu Feb 10 20:43:22 2011] [warn] VirtualHost 192.168.1.100:80 overlaps with VirtualHost 192.168.1.100:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Thu Feb 10 20:43:22 2011] [warn] VirtualHost 192.168.1.100:80 overlaps with VirtualHost 192.168.1.100:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Thu Feb 10 20:43:22 2011] [warn] VirtualHost 192.168.1.100:80 overlaps with VirtualHost 192.168.1.100:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Thu Feb 10 20:43:22 2011] [warn] VirtualHost 192.168.1.100:80 overlaps with VirtualHost 192.168.1.100:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Thu Feb 10 20:43:22 2011] [warn] VirtualHost 192.168.1.100:80 overlaps with VirtualHost 192.168.1.100:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Thu Feb 10 20:43:22 2011] [warn] VirtualHost 192.168.1.100:80 overlaps with VirtualHost 192.168.1.100:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Thu Feb 10 20:43:22 2011] [warn] VirtualHost 192.168.1.100:80 overlaps with VirtualHost 192.168.1.100:80, the first has precedence, perhaps you need a NameVirtualHost directive
[Thu Feb 10 20:43:22 2011] [warn] VirtualHost 192.168.1.100:0 overlaps with VirtualHost 192.168.1.100:443, the first has precedence, perhaps you need a NameVirtualHost directive

Die Datei /etc/apache2/ports.conf öffnen und folgende Zeile ändern:

NameVirtualHost *:80

wird zu

NameVirtualHost 192.168.1.100:80

Dann den Apache Server neu starten und ggf. mit “apache2ctl -S” die virtuellen Server prüfen.
In OpenSuSE heißt die Datei “listen.conf” anstelle von “ports.conf”.

03. Jun 2012
Teaser

JavaScript: “ucFirst(string)” schreibt das erste Zeichen einer Zeichenkette groß, den Rest klein

Die von anderen Programmiersprachen bekannte Funktion “ucFirst()” können Sie sehr einfach auch in JavaScript nutzen:

function ucFirst(string) {
    return string.substring(0, 1).toUpperCase() + string.substring(1).toLowerCase();
}

Wenn der Rest der zeichenkette unverändert bleiben soll, dann können Sie auch diese Version nutzen:

function ucFirst(string) {
    return string.substring(0, 1).toUpperCase() + string.substring(1);
}