Datenbankfehler nach Update auf HHVM 3.6

Nach dem Update von HHVM auf Version 3.6 konnten meine Seiten nicht mehr auf ihre MySQL Datenbank zugreifen. Ursache des Problems ist, dass bei den Paketen für Ubuntu/Debian  der Socket für die Verbindung zu localhost hart auf „/tmp/mysql.sock“ kodiert ist.

Der richtige Socket wäre aber „/var/run/mysqld/mysqld.sock“. Glücklicherweise gibt es dafür einen Konfigurationsparameter sodass man HHVM  nicht selbst neu kompilieren muss.

Es genügt ein Eintrag in der Datei /etc/hhvm/server.ini

hhvm.mysql.socket = /var/run/mysqld/mysqld.sock

Howto: Debian 6 (Squeeze) mit nginx + FastCGI + Zend Framework

Falls noch nicht geschehen installieren wir zuerst mal nginx und php5-cgi PHP-FPM.

aptitude install nginx php5-cgi php5-fpm

Jetzt legen wir uns eine neue Konfigurationsdatei für nginx mit folgendem Inhalt an.

server {
	server_name  example.com;
	access_log  /var/log/nginx/com.example.access.log;
	if (!-e $request_filename) {
    		rewrite ^.*$ /index.php last;
	}
	root   /var/www/vhosts/example.com/public;
	index  index.php index.html;
	location ~ \.php$ {
		include /etc/nginx/fastcgi_params;
                keepalive_timeout 0;
                fastcgi_param  APPLICATION_ENV  'development';
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                fastcgi_pass    127.0.0.1:9000;
	}
}

Die Rewrite Regel leitet wie beim Zend-Framework üblich alle Dateien die nicht existieren auf die index.php um.

Die Datei wird anschließend als “/etc/nginx/sites-available/example.com” gespeichert und zum aktivieren verlinkt.

ln –s “/etc/nginx/sites-available/example.com “/etc/nginx/sites-enabled/example.com

Nun muss noch nginx neu startet werden.

/etc/init.d/nginx restart

Dateien mit der Endung .php werden also an localhost auf den Port 9000 weiter gereicht. An der Stelle wartet jetzt noch kein PHP auf die Anfrage. Man könnte jetzt also einfach php-cgi starten, das hält aber nur bis nächsten Neustart.

php-cgi -b 127.0.0.1 &

Oder aber man richtet sich ein entsprechendes Init Script ein.

Howto: Debian 5 (Lenny) mit Lighttpd (Lighty) + PHP 5.3 + Zend Framework

Backports einfügen

PHP Backports von dotdeb.org

deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all


Lighty Backports von bits and pieces

deb http://www.jonmoniaci.com/debian-ppa/ lenny main contrib non-free

Installation

aptitude install lighttpd php5-cgi
lighttpd-enable-mod fastcgi fastcgi-php

VHost einrichten

Wir legen jetzt eine neue Konfigurationsdatei für unseren VHost an.

touch /etc/lighty/available-mods/10-myvhost.conf


Die Datei bearbeiten wir jetzt mit einen beliebigen Editor

$HTTP["host"] == "myhost.example.com" {
	server.document-root = "/pfad/zur/ZF-Anwendung/public"
	url.rewrite-once = (
		".*\.(js|ico|gif|jpg|png|css)$" => "$0",
		".*\?(.*)$" => "/index.php?$1",
		"" => "/index.php"
	)
	setenv.add-environment = (
		"APPLICATION_ENV" => "development"
	)
}


Nun muss die Konfiguration noch aktiviert werden

lighttpd-enable-mod myvhost

Module hinzufügen

Jetzt müssen der Datei “/etc/lighttpd/lighttpd.conf” noch 2 Module hinzugefügt werden

server.modules = (
	#andere Module
        "mod_rewrite",
        "mod_setenv"
)

Konfiguration neu laden

/etc/init.d/lighttpd force-reload


Nachdem die Konfiguration neu geladen wurde, sollte das Ganze wie gewünscht funktionieren.