Random thoughts & observations

From the mundane to the profound and everything in between here’s what’s rocking our world

Installing PyroCMS 3 Beta

Posted: August 15, 2015
Written by: Saints At Play
Category: PyroCMS

PyroCMS is, without the shadow of a doubt, our numero-uno choice of CMS for all web development related work, whether it be private or client related, and we've been looking forward to getting our hands on version 3 of the software.

Built from the ground up with Laravel the recent beta release of PyroCMS v3 gave us the opportunity to test out our favourite CMS solution.

Check requirements

First things first with any server side software: make sure your system requirements will support what you are intending to install and use.

The PyroCMS 3 beta has a number of requirements that must be satisfied in order for the package to be able to be downloaded/installed and used:

  • PHP >= 5.5.9
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • Fileinfo PHP Extension
  • GD Library (>=2.0) OR Imagick PHP extension (>=6.5.7)

Compose yourself

As the installation process for PyroCMS 3 requires Composer (a dependency management tool for handling PHP packages) you'll need to ensure that this is installed on your system.

The easiest way to determine if this is the case is to type out the following in your Terminal:

composer -v

And, if the software is installed, you will see something akin to the following returned in the Terminal window:

  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
Composer version 1.0-dev (c6cc6dd6070871f4b198ed39f76dd8047c116b02) 2015-07-21 13:46:38

Otherwise, if Composer isn't installed you can rectify this with the following Terminal command (assumes you are developing on a unix based system):

curl -sS https://getcomposer.org/installer | php

For further information about Composer including documentation guides and resources visit the official website.

Downloading the PyroCMS beta

Now that you've verified Composer is available on your system you'll need to navigate in your Terminal to the location where you want the PyroCMS beta to be installed. Once you've done this issue the following command to begin the download process for the software and all its related dependencies:

composer create-project pyrocms/pyrocms=3.0-beta1 --prefer-dist

During the download process we did notice errors, akin to the following, with Composer trying to install certain dependencies:

copy(/Users/yournamehere/.composer/cache/files/psr/log/fe0936ee26643249e916849d48e3a51d5f5e278b.zip): failed to open stream: Permission denied

We overcame this by running the following Unix command on the .composer/cache directory:

chmod -R 775 /Users/yournamehere/.composer/cache

The next issue, albeit relatively minor, that we encountered with Composer requesting/installing dependencies was the following:

- Installing ptachoire/cssembed (v1.0.2)
    Downloading: Connecting...
Could not fetch https://api.github.com/repos/krichprollsch/phpCssEmbed/zipball/406c6d5b846cafa9186f9944a6210d0e6fed154b, please create a GitHub OAuth token to go over the API rate limit
Head to https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+yournamehere.local+2015-08-14+0001
to retrieve a token. It will be stored in "/Users/yournamehere/.composer/auth.json" for future use by Composer.

This was easily resolved by visiting the github URL listed in the message:


Here we generated an oAuth token, to overcome the github API usage limit, which we then copied and pasted into the Terminal prompt to continue allowing Composer to install the required dependencies.

Towards the end of this process the following messages were printed out to the Terminal:

kriswallsmith/assetic suggests installing leafo/lessphp (Assetic provides the integration with the lessphp LESS compiler)
kriswallsmith/assetic suggests installing leafo/scssphp-compass (Assetic provides the integration with the SCSS compass plugin)
kriswallsmith/assetic suggests installing patchwork/jsqueeze (Assetic provides the integration with the JSqueeze JavaScript compressor)
symfony/var-dumper suggests installing ext-symfony_debug ()
maximebf/debugbar suggests installing predis/predis (Redis storage)
symfony/translation suggests installing symfony/config ()
symfony/routing suggests installing symfony/config (For using the all-in-one router or any loader)
symfony/routing suggests installing symfony/expression-language (For using expression matching)
symfony/event-dispatcher suggests installing symfony/dependency-injection ()
symfony/http-kernel suggests installing symfony/browser-kit ()
symfony/http-kernel suggests installing symfony/class-loader ()
symfony/http-kernel suggests installing symfony/config ()
symfony/http-kernel suggests installing symfony/dependency-injection ()
psy/psysh suggests installing ext-pcntl (Enabling the PCNTL extension makes PsySH a lot happier :))
psy/psysh suggests installing ext-pdo-sqlite (The doc command requires SQLite to work.)
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing raven/raven (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ruflin/elastica (Allow sending log messages to an Elastic Search server)
monolog/monolog suggests installing videlalvaro/php-amqplib (Allow sending log messages to an AMQP server using php-amqplib)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)
monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)
monolog/monolog suggests installing php-console/php-console (Allow sending log messages to Google Chrome)
league/flysystem suggests installing league/flysystem-eventable-filesystem (Allows you to use EventableFilesystem)
league/flysystem suggests installing league/flysystem-rackspace (Allows you to use Rackspace Cloud Files)
league/flysystem suggests installing league/flysystem-copy (Allows you to use Copy.com storage)
league/flysystem suggests installing league/flysystem-azure (Allows you to use Windows Azure Blob storage)
league/flysystem suggests installing league/flysystem-webdav (Allows you to use WebDAV storage)
league/flysystem suggests installing league/flysystem-aws-s3-v2 (Allows you to use S3 storage with AWS SDK v2)
league/flysystem suggests installing league/flysystem-aws-s3-v3 (Allows you to use S3 storage with AWS SDK v3)
league/flysystem suggests installing league/flysystem-dropbox (Allows you to use Dropbox storage)
league/flysystem suggests installing league/flysystem-cached-adapter (Flysystem adapter decorator for metadata caching)
league/flysystem suggests installing league/flysystem-sftp (Allows you to use SFTP server storage via phpseclib)
league/flysystem suggests installing league/flysystem-ziparchive (Allows you to use ZipArchive adapter)
laravel/framework suggests installing aws/aws-sdk-php (Required to use the SQS queue driver and SES mail driver (~3.0).)
laravel/framework suggests installing fzaninotto/faker (Required to use the eloquent factory builder (~1.4).)
laravel/framework suggests installing iron-io/iron_mq (Required to use the iron queue driver (~2.0).)
laravel/framework suggests installing league/flysystem-aws-s3-v3 (Required to use the Flysystem S3 driver (~1.0).)
laravel/framework suggests installing league/flysystem-rackspace (Required to use the Flysystem Rackspace driver (~1.0).)
laravel/framework suggests installing pda/pheanstalk (Required to use the beanstalk queue driver (~3.0).)
laravel/framework suggests installing predis/predis (Required to use the redis cache and queue drivers (~1.0).)
laravel/framework suggests installing pusher/pusher-php-server (Required to use the Pusher broadcast driver (~2.0).)
intervention/image suggests installing ext-imagick (to use Imagick based image processing.)
intervention/image suggests installing intervention/imagecache (Caching extension for the Intervention Image library)
phpseclib/phpseclib suggests installing ext-gmp (Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.)
phpseclib/phpseclib suggests installing pear-pear/PHP_Compat (Install PHP_Compat to get phpseclib working on PHP < 4.3.3.)
rcrowe/twigbridge suggests installing twig/extensions (~1.0)
sebastian/global-state suggests installing ext-uopz (*)
phpdocumentor/reflection-docblock suggests installing dflydev/markdown (~1.0)
phpdocumentor/reflection-docblock suggests installing erusev/parsedown (~1.0)
phpunit/php-code-coverage suggests installing ext-xdebug (>=2.2.1)
phpunit/phpunit suggests installing phpunit/php-invoker (~1.1)

These look somewhat formidable but upon closer inspection they aren't too much to be concerned about.

Composer generates these messages to inform you of additional functionality that it recommends you install but you can, depending on what packages you are using (and what they might require), safely ignore these if you want to.

Bottom line here is - if you're concerned, simply Google it for further information.

Permissions granted

As with most server-side installations you will need to ensure the correct permissions are assigned to the following directories:

  • pyrocms/public/assets
  • pyrocms/storage
  • pyrocms/bootstrap/cache

Navigate to the root of where the PyroCMS 3 beta package has been installed and simply run the following unix commands:

chmod -R 775 pyrocms/public/assets
chmod -R 775 pyrocms/storage
chmod -R 775 pyrocms/bootstrap/cache

Now that the PyroCMS 3 beta installer has been downloaded, all the required PHP dependencies have been successfully integrated via Composer and the relevant directories have been granted the necessary permissions we can go through the actual process of installing PyroCMS via the browser.

The PyroCMS beta installer

If you're using MAMP (or similar) you can set-up a new hostname for the downloaded PyroCMS 3 beta software and, once completed, access that in the browser like so:

PyroCMS installation license notice

The first thing you will notice is the software License followed by the installer form fields for the database/administrator configuration, application information and language/timezone set-up.

PyroCMS installer form fields

One of the nice things about the beta version is that, unlike previous iterations of the software, the installer consists of only a single screen for configuring your website/application set-up. This hugely streamlines and simplifies the whole process and, in of itself, is a huge improvement on previous versions.

Once you save the data entered into the set-up form another improvement on previous versions of the installer becomes apparent: a nice progress bar informing you of how the actual installation process is proceeding.

PyroCMS beta in the midst of installation

This might seem quite minor but we think it's a really nice feature (and we haven't even completed the installation process and started using the CMS yet!)

Once completed you'll see the following screen, where you can choose to login to the admin area or view the default website theme:

Pyrocms beta installation completed

The login screen demonstrates a minimal but aesthetically pleasing design, similar to the actual installer itself. It's clear that the PyroCMS team have made every effort to ensure the look and feel of the software is every bit as professional as the codebase it ships with.

The UI for the CMS admin area has also been overhauled with the navigation menu now accessible from the left hand side of the screen:

On first log-in you will be presented with a message warning you that the Installer module needs to be deleted.

To do this simply navigate to the root directory of your PyroCMS 3 beta installation, from your computer desktop or by command line, and remove the following directory :


And now that you have a fully functioning PyroCMS 3 beta installation start exploring the features and playing with the codebase!

There's some initial documentation available on the PyroCMS website (with the promise of more to follow) and, if you fancy getting your hands dirty in the codebase itself, it won't hurt to familiarise yourself with the official Laravel documentation either.

In summary

One word: Wow!

The PyroCMS team have really raised the bar on the latest (and still evolving) version of an already incredible CMS:

Improved UI - check

Intuitive installation process - check

Support for latest PHP standards and features - check

Laravel integration - check

Dependency management/Composer - check

Object oriented code/MVC - check

Theme support - check

Ease of use - check

Documentation - still in progress (but good enough to start with)

Congratulations to the team at PyroCMS for an amazing job of re-engineering an existing (and already solid) CMS product and massively improving upon both the codebase and the UI. It's a difficult challenge to make something both client and developer friendly but they've managed to do this in a way that makes the software work without feeling complicated or convoluted (unlike some CMS 'solutions' we could mention).

Not an easy task but they've pulled it off remarkably well.

Here's to Ryan Thompson and his team!

« Return to Posts


There are no comments

Posting comments after three months has been disabled.