Installing Phrozn PHP on Ubuntu

I was recently inspired by an article written by Christian Schaefer, on the Phrozn project. A very impressive PHP based static site generator!

The project mentions a few sources of inspiration, like Jekyll (that powers GitHub pages, Hyde and a bunch of others. I wont go into details about them or even Phrozn but I do recommend that you check it out and read through the many blog posts on it.

Instead I will assume you are convinced it is an interesting system and want to install it on your Ubuntu machine.

The recommended way is using Phrozn's PEAR channel:

$ pear channel-discover
$ pear install phrozn/Phrozn-beta

Because your PEAR setup can differ from mine, you need to figure out where Phrozn was installed to. That is done by checking out bin_dir and the php_dir.

$ pear config-show|grep bin_dir
PEAR executables directory     bin_dir          /home/tobias/pear/bin
$ ls /home/tobias/pear/bin/
dbunit  pear  peardev  pecl  phpcov  phptok  phpunit  phr  phrozn

Of course it is way too troublesome having to execute /home/tobias/pear/bin/phr command every time you want to invoke Phrozn. To be able to run phr straight from the prompt requires that it is in your $PATH. This might have been handled for you when you installed PEAR but if not, simply add the following to your .bashrc:

# Include PEAR executables in PATH
if [ -x pear ]; then
    PATH="$PATH:`pear config-show|grep bin_dir|awk '{ print $5 }'`"

Actually running Phrozn is where I bumped into problem.

$ phr
PHP Fatal error:  Class 'Console_CommandLine' not found in /home/tobias/projects/phrtest/Phrozn/Runner/CommandLine/Parser.php on line 39
PHP Stack trace:
PHP   1. {main}() /home/tobias/pear/bin/phr:0
PHP   2. Phrozn\Runner\CommandLine->run() /home/tobias/pear/bin/phr:15
PHP   3. Zend\Loader\StandardAutoloader->autoload() /home/tobias/projects/phrtest/Phrozn/Vendor/Zend/Loader/StandardAutoloader.php:0
PHP   4. Zend\Loader\StandardAutoloader->loadClass() /home/tobias/projects/phrtest/Phrozn/Vendor/Zend/Loader/StandardAutoloader.php:224
PHP   5. include() /home/tobias/projects/phrtest/Phrozn/Vendor/Zend/Loader/StandardAutoloader.php:304

The error message I got said that it tried but failed to include Console_CommandLine. So I decided to try and install it:

$ pear install Console_CommandLine
pear/Console_CommandLine is already installed and is the same as the released version 1.1.3
install failed

So it was installed but could not be loaded – this was obviously another problem with paths not being set up. Again looking at pear config-show I gathered that my php_dir was configured to /home/tobias/pear/share/pear. After checking my PHP's include_path I added an override:

$ echo -e '[PHP]\ninclude_path = ".:/usr/share/php:/usr/share/pear:/home/tobias/pear/share/pear"' | sudo tee /etc/php5/conf.d/pear_include.ini

Then I tried again:

$ phr -v
/usr/bin/phrozn version 0.2.

Great success! Everything is in place and code can start being written.