phpOpenEMM now on github

We recently moved the source code for the PHP – wrapper for the email marketing software OpenEMM to github. It is also available via packagist for easier installation. Feel free to follow, fork and send pull requests!


FastCGI, PHP, Symfony2 with basic auth not working

Just had a little issue that seams to be common in the web. Got a new server with Plesk 11 (sorry for that) and it took me nearly a day to get it working and setup for capifony deployment of Symfony2 projects.

The typical issues with not correctly set access rights for the root directory of the project (should be 755), manually editing of parameters.ini and other stuff was ok. But what nearly killed me was that my Plesk installation always returned a 503 when running PHP as apache module. FastCGI was default and seemed to be working, so I went with this.

Unfortunately this did not work with the admin interface that was running in a “virtual” subdirectory. It was not possible to login. In the background it is using the default, simple, boring and potentially unsecure basic authentification.

Did you know that there is a problem with FastCGI, Symfony2 and basic authentification? I did not, but know I know. It is fixed in the current release (2.0.16) – which is good. But unfortunately there is a RewriteRule that has to be written inside your web/.htaccess. Check the comment in src/symfony/src/Symfony/Component/HttpFoundation/ServerBag.php:

* php-cgi under Apache does not pass HTTP Basic user/pass to PHP by default
* For this workaround to work, add this line to your .htaccess file:
* RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
* A sample .htaccess file:
* RewriteEngine On
* RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Unfortunately, I tried a different line that was written in the ticket above:

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

This did not work, but resulted in 401 results for all requests. Just remove the ,l which means that this .htaccess file will be left.

So if you are running a Symfony2 project with FastCGI, add this line to your web/.htaccess file:

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Plesk 8 installation on debian 4

Installing Plesk 8.x on debian 4.x “etch” seems a bit uncommon, but the mixture of a rockstable and secure base system as debian and the common webserver management interface Plesk makes sense.

How to install Plesk on debian

  1. Install a fresh debian and perform a dist-upgrade:
    apt-get update && apt-get dist-upgrade
  2. Add the following line to the apt sources list located at /etc/apt/sources.list (replace 8.2.1 and etch with your versions)
    deb etch all
  3. Force apt-get to update database with new information from Plesk
    apt-get update
  4. Install Plesk base system with apt-get, say Yes to accept the packages from Plesk that have a problematic signature.
    apt-get install psa
  5. Install Plesk Autoupdate module with apt-get:
    apt-get install psa-autoinstaller
  6. Install package with PHP5 suport for Plesk
    apt-get install psa-php5-configurator
  7. Restart PSA – don’t forget this! Otherwise you’ll get 404 errors instead the login page.
    /etc/init.d/psa restart
  8. Access the fresh installed Plesk interface with your browser (replace your-server-name with the url/ip of your server). The default login is admin, the default password setup.
  9. That’s it. The rest can be done via the Plesk interface.

More information can be found in the Plesk v8.2.1 build82070918.10 for Debian-4.0 x86_64 Release Notes.