Martin Lantzsch
Software Entwickler
15. August 2010

PHP_FCGI_CHILDREN – spar dir den Ram!

15. August 2010 - Geschrieben von Martin - 3 Kommentare

Mein kleiner Debian Test Server hat die letzten Tage unwahrscheinlich viel Ram gezogen. Von 265MB welche verbaut sind, nutzte er bereits nach einem Neustart ganze 75% – das kann es ja nicht sein, schließlich laufen dort lediglich ein Lighttpd, MySQL, Exim4, Courier und SSH, also nichts weltbewegendes. Zu diesem Zeitpunkt griff ich auch nur mit 2 Rechnern auf meine PHP Anwendungen zu.

Also begann ich die vielen php5-cgi Prozesse genauer unter die Lupe zu nehmen, da diese am meisten Ram brauchten. Nach einigem unnützen hin und herstellen in der PHP.ini wagte ich mich noch an die FastCGI Konfiguration von Lighttpd, dort habe ich nur so zum Test die PHP_FCGI_CHILDREN heraus geschmissen und siehe da, der Server benötigt nach einem Neustart des Webservers Lighttpd nur noch gute 30 bis 50% Ram, wenn das mal kein befriedigendes Ergebnis ist.

Des weiteren habe ich nun anstatt 12 php5-fcgi Prozessen nur noch 4 Stück. Offenbar beendet PHP oder FastCGI die Geforkten Tasks nicht mehr richtig …

Laut PHP Bugtracker existiert dieser Bug schon seit gut 3,5 Jahren: http://bugs.php.net/40286

23. April 2010

PHP – Mail Domains ausschließen

23. April 2010 - Geschrieben von Martin - 10 Kommentare

Gestern war es wiedermal so weit, einige User hatten sich bei Resigame mit feigen Müll Mail Adressen angemeldet. Aber damit ist jetzt Schluss, ich hab die Registrierung gegen diese Mail Adressen abgesichert. Mit folgendem RegEx bin ich vorgegangen:

  // hier die Mail Adresse, welche idR via Formular übergeben wird
  $mail = 'haha@mülldomain.tld';
  // hier können beliebig viele Mail Domains eingetragen werden
  $trash = array('müllmaildomain.tld', 'nochsoeine.tld');
  // nun durchlaufen wir alle Domains
  foreach($trash as $var)
  {
    // wenn die Adresse in die Vorlage passt
    // stirbt das Script und es wird ein Fehler ausgegeben
    if(preg_match('/([a-zA-Z0-9._-])*@'.$var.'/', $mail))
    {
      die('BLOCKED MAIL DOMAIN!');
    }
  }

Das wäre es dann auch schon. Der Array könnte auch aus einer Datenbank befüllt werden, aber das sollte jeder selbst hinbekommen.

15. Februar 2010

Exim: main option “mysql_servers” unknown

15. Februar 2010 - Geschrieben von Martin - Ein Kommentar


Exim configuration error in line of /var/lib/exim4/config.autogenerated: main option "mysql_servers" unknown

Wenn Sie beim Start von Exim4 diese Fehlermeldung erhalten, sollten sie in allen Konfigurationsdateien (/etc/exim4/conf.d/) „localhost“ mit „127.0.0.1“ tauschen, und anschließend Exim4 erneut starten. Nun sollte ihr Mail Server laufen.

15. Februar 2010

PHP Mail Funktion an SMTP Authentifizieren

15. Februar 2010 - Geschrieben von Martin - Keine Kommentare

Je nach Mail Konfiguration kann es von nöten sein, das man sich am SMTP Server authentifiziert, sprich einen Benutzername und ein Passwort mitgibt.

Verwenden Sie niemals einen offenen Relay, denn über diesen können Spammer Mails versenden!

Dazu müssen Sie in ihrer PHP.ini folgende Parameter suchen:

[mail function]
SMTP = localhost
smtp_port = 25

Diese erweitern Sie um folgende zwei Felder:

username = mail@domain.tld
password = meinpasswort

(natürlich beides an die Gegebenheiten anpassen)

Es sollte dann so aussehen:

[mail function]
SMTP = localhost
smtp_port = 25
username = mail@domain.tld
password = meinpasswort

Nun können Sie wie gewohnt Mails verschicken:

mail('empfaenger@domain.tld', 'Betreff', 'Inhalt der Mail', 'From: absender@domain.tld');