Kategorie: PHP Technik

0

Installation Apache2, PHP5 und MySQL

Dieser Artikel widmet sich der Installation eines Apache2 mit Mod-PHP und MySQL auf einem Ubuntu 12.04-Server. Um einen Webserver von Grund auf zu installieren, gibt es zwei Möglichkeiten. Apache2 mit Mod-PHP oder Lighttpd mit PHP-FPM. Die Installation eines Lighty mit allem drum und dran ist im Beitrag „Installation Lighttpd mit PHP-FPM und MySQL“ ausführlich beschrieben.

1

Installation Lighttpd mit PHP-FPM und MySQL

Lighttpd a.k.a. Lighty ist die schlanke Variante eines Webservers. Er hält sich mit Loggings zurück und verzichtet auf nützliche aber performance-killende Gimmicks wie das Parsen von .htaccess-Dateien usw. Dadurch ist er gerade für umfangreiche Webauftritte die ideale Lösung. Diese Anleitung zeigt am Beispiel eines Ubuntu 12.04-Servers, wie man den Lighty installiert, konfiguriert und mit den nötigen Modulen wie PHP-FPM, Rewrite-Funktionen und MySQL-Unterstützung versieht.

0

MySQL FROM_UNIXTIME und negative Timestamps

Seit der MySQL-Version 4 liefert die Funktion FROM_UNIXTIME([UNIX-Timestamp) für negative UNIX-Timestamps „NULL“ zurück. Das ist natürlich unschön, da manche Datums-Funktionen über MySQL wesentlich schneller und einfacher zu realisieren sind als bspw. mit PHP. Abhilfe schafft hier ein kleiner Umweg über die Funktion DATE_ADD(). Diese ermöglicht es, einem beliebigen Datum eine zu definierende Zeitspanne hinzuzuaddieren. Statt nun also der Funktion FROM_UNIXTIME() die Spalte mit dem UNIX-Timestamp als Parameter zu übergeben, kann man mit DATE_ADD(FROM_UNIXTIME(0),INTERVAL [Spalte mit dem UNIX-Timestamp] SECOND) dafür sorgen, dass man stets den korrekten Wert auch für Daten vor dem 01.01.1970 erhält.

2

TYPO3 Swiftmailer – Fallstricke

Nachdem ich jetzt für das Kontaktformular über die Thematik gestolpert bin, will ich das natürlich niemandem vorenthalten: Nutzt man den neuen TYPO3-Swiftmailer und will damit mails an mehrere Empfänger verschicken so ist es ratsam, für jede zu versendende Email eine eigene Instanz des Swiftmailers zu erzeugen. Hintergrund: Beim Versenden einer Mail an mehr als einen Empfänger über die selbe Klasse erhält jede Nachricht die selbe Message-ID. Das kann bei Exchange-Nutzern oder möglicherweise auch bei Freemail-Usern zu Problemen führen. Behält man dies im Hinterkopf, funktioniert der Swiftmailer problemlos.

0

Direct Mail, Empfängerlisten im CSV-Format werden nicht erkannt

Nachdem wir ja nun das eine oder andere Mal Direct Mail einsetzen, stolpert man vielleicht irgendwann mal darüber, dass Direct Mail einfache Listen im CSV-Format nicht korrekt erkennt. Der Grund liegt hier in einer Unverträglichkeit von Direct Mail und gewissen PHP-Versionen, siehe Auszug aus typo3conf/ext/direct_mail/res/scripts/class.tx_directmail_static.php (Zeile 764ff.) /** * parsing csv-formated text to an array * * @param string $str: string in csv-format * @param string $sep: separator * @return array parsed csv in an array */ function getCsvValues($str,$sep=‘,‘) { $fh=tmpfile(); fwrite ($fh, trim($str)); fseek ($fh,0); $lines=array(); if ($sep == ‚tab‘) $sep = chr(9); while ($data = fgetcsv ($fh, 1000,...

0

Merkzettel PHP eaccelerator und ioncube_loader

eAccelerator ist erst ab Version 0.9.6.1 zum ioncube_loader kompatibel. Der ioncube_loader darf dann aber nicht via „extension=ioncube….so“ eingebunden werden (wie im HowTo beschrieben) sondern muss ueber „zend_extension=“/var/lib/php/…./ioncube….so“ in die php.ini eingetragen werden.

0

PHP 5.3.3 mit nativem php-fpm bauen

Als Merkzettel: cd /usr/local/src/ wget ‚http://de.php.net/get/php-5.3.3.tar.bz2/from/this/mirror‘ tar jxf php-5.3.3.tar.bz2 export CFLAGS=‘-O3 -mtune=core2 -mmmx -msse -msse2 -msse3 -fexpensive-optimizations -ftree-loop-optimize -ftree-vectorize -ftree-vectorizer-verbose=5′ export CXXFLAGS=$CFLAGS wget ‚http://download.suhosin.org/suhosin-patch-5.3.3-0.9.10.patch.gz‘ gunzip suhosin-patch-5.3.3-0.9.10.patch.gz cd php-5.3.3 patch -p 1 -i ../suhosin-patch-5.3.3-0.9.10.patch ./buildconf ./configure –prefix=/usr/local/php533 -with-libdir=lib64 –with-openssl –with-zlib –enable-bcmath –with-bz2 –enable-calendar –with-curl –enable-dba=shared –enable-exif=shared –with-pcre-regex –enable-ftp=shared –with-gd=shared –with-jpeg-dir –with-png-dir –with-zlib-dir –with-xpm-dir –with-freetype-dir –with-gettext –with-imap=shared,/usr –with-imap-ssl –with-kerberos –enable-mbstring –with-mcrypt=shared,/usr –with-mhash=shared,/usr –with-mysql=shared –with-mysqli=shared –with-pdo-mysql=shared –with-pspell=shared,/usr –enable-soap –enable-sockets –enable-sqlite-utf8 –enable-sysvmsg –enable-sysvsem –enable-sysvshm –with-tidy=shared,/usr –enable-wddx –with-xmlrpc=shared –with-libexpat-dir –with-iconv-dir –enable-zip –with-pear –enable-zend-multibyte –enable-fpm –enable-gd-native-ttf –with-fpm-user=www-data –with-fpm-group=www-data –with-config-file-path=/usr/local/lib –with-config-file-scan-dir=/etc/php5/conf.d make -j3 make test make install cd .. wget ‚http://pecl.php.net/get/memcache-2.2.5.tgz‘ tar zxf memcache-2.2.5.tgz cd memcache-2.2.5 export...

0

Caching Framework in Extensions

Extensions sollten um horizontal zu skalieren, Caches nicht in eigens gebauten $_SESSION Arrays oder Temporaeren SQL Tabellen halten, sondern das ab TYPO3 4.3.0 eingebaute und ab 4.3.1 vollstaendig umgesetzte Caching Framework (ein Backport aus der FLOW3 Entwicklung) verwenden. Ein guter Artikel ist: Caching in Extensions http://danosipov.com/blog/?p=322 Bei der Entwicklung der Extensions ist natuerlich darauf zu achten, dass diese in der Form auch erst ab 4.3.1 korrekt arbeiten, und auf aelteren Installationen nicht funktionieren werden. In kurzen Auszuegen: In die ext_localconf.php folgendes hinzufuegen, wenn Memcached verwendet werden soll: // If cache is not already defined, define it if (!is_array($TYPO3_CONF_VARS[‚SYS‘][‚caching‘][‚cacheConfigurations‘][‚my_extension‘])) { $TYPO3_CONF_VARS[‚SYS‘][‚caching‘]...

5

Server mit memcached, php-memcache und aktiviertem TYPO3 (>4.3.0) Caching Framework

memcached ist perfekt zum cachen eigener Inhalte. Damit der Server damit ausgeruestet ist: apt-get install memcached Ist ein Server mit mehr als 2 Kernen ausgestattet, sollte das threaded Paket installiert. Der memcached sollte den freien RAM vollstaendig ausnutzen (nicht ueberbuchen, damit’s nicht ins SWAP geht). Die Speichermenge kann in /etc/memcached.conf eingestellt werden. PHP kann eine API anbieten (die Applikationen muessen sich aber schon selbstaendig um die Verwendung und Organisation des Caches kuemmern: z.B. TYPO3 Extensions koennen vom TYPO3 Core Caching Framework via memcache profitieren ) Um die PHP Erweiterung zu installieren: apt-get install php5-dev pecl install memcache-3.0.6 Ideale PHP Werte...