Ubuntu – Apache Virtualhosts with PHP and custom logs – how to isolate PHP errors

apache-2.2loggingPHPUbuntu

I'm trying to setup a simple hosting enviroment for my application on an Ubuntu server.

I created a virtualhost like this:

<VirtualHost *:80>
        ServerAdmin info@example.org
        ServerName www.example.com
        ServerAlias example.com

        DocumentRoot /home/owner/example.com/docs
        <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/owner/example.com/docs/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
        </Directory>

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        <Directory "/usr/lib/cgi-bin">
                AllowOverride None
                Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        </Directory>

        ErrorLog /home/owner/example.com/logs/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /home/owner/example.com/logs/access.log combined

        php_flag log_errors on
        php_value error_log /home/owner/example.com/logs/php-error.log

</VirtualHost>

Now, my problem is that PHP errors and warnings are thrown in the error.log – not the php-error.log as I was hoping.

How can achieve this?

Best Answer

Ensure that the apache user has permission to create the /home/owner/example.com/logs/php-error.log file in addition to being able to write to it.

Most likely the /home/owner/example.com/logs/ directory has 755 permissions, which would prevent Apache from being able to create the php-error.log file.