Start using Fuel PHP today

The last few days I have been busy looking at the Fuel PHP framework. And it’s AWESOME. That’s not a great description, its not even very objective, but none the less it is true (you will have to take my word for it now). The framework can be found at

Today I am going to give a quick guide for installing and running Fuel PHP on a linux machine and some extra cool tricks to make the setup easier. First what things do you need, assuming that you have a fresh linux install.

  • apache webserver
  • php 5.3 (needs to be at least 5.3)
  • php cli (command line interface)
  • mysql database server
  • command line editor vi or vim (not totally necessary but i will assume that you have one as I believe command line file editing to be the easiest option)
  • wget or curl (fuel documentation uses curl but either could be used)

I will also assume that you have root access and that you are on a home computer using localhost for your domain. Production environments require more careful setup and I will address those issues in a completely different post.

Lets Go

1. install all the necessary components

sudo apt-get update
sudo apt-get install php5 php5-cli apache2 mysql-server phpmyadmin curl vim git-core

2. install the fuel PHP oil installer. (that sounds strange)

curl | sh

3. change into the directory that you want to build you fuel application in and run the fuel PHP oil create script. replace {user} with your username and {app name} with the name you want to give your application. it doesn’t matter what the name is as it wont get used in the website URI

cd /home/{user}/Public/
oil create {app name}

4. Now it that’s as far as the basic section of the documentation on the documentation website. However you cannot access the app in the browser yet. Before you can do that there are a few steps that you must take. We have to set up the apache virtual host. This greatly varies on you operating system, but for simplicity I will cover just Ubuntu, and will cover different OS’s later. We need to alter the virtual host so that it follows symbolic links and knows what the root directory of the website is. Because the fuel index.php file is in the public folder in the actual top directory we will include the public directory in the website root directory.

sudo vim /etc/apache2/sites-enabled/000-default

Now make the file look like this:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        DocumentRoot /home/{user}/Public/{app name}/public
        <Directory />
                Options FollowSymLinks
                AllowOverride All
                Order allow,deny
                allow from all
        <Directory /home/{user}/Public/{app name}/public>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all

Restart apache to apply the configuration changes

sudo /etc/init.d/apache2 restart

5. If everything worked you should now be able to go to http://localhost/ and the fuel app page should be visible. It looks a little bit like the codeigniter welcome page. (most of the developers of fuel have or still do contribute to codeigniter).


Hopefully this is guide is a relatively straight forward explanation of how to set up fuel on a new development environment. Any questions or comments are appreciated. I’m sure I made a mistake somewhere in there or perhaps it just didn’t work on your computer. I would also love to get some suggestions on what you would like to see next.

Quick Note on fuelphp transfer.

Yesterday I blogged about the need to change the underlying framework from codeigniter to fuel. This I have discovered was a lapse in judgement due to the desire for certain pre-built functionality that is not wholly necessary for version 1. I went through fuel and come to the following conclusions.

1. Fuel (fuelphp) is a great framework. It has functionality that is incredibly desirable such as a database interaction through object relation mapping and a authentication frame (not authentication but more a model in which to build upon).

2. My current framework codeigniter, while suitable for small fast prototyping, does not have all the tools that I need to create exactly what I feel that I need they way that i want it.

3. This is the most important thing. What I desire is not what i am trying to do immediately.

My project, for those who haven’t read about what I am trying to do, is create a custom content management system, along with a set of tools, for developing large back end systems for specific clients.

Right now I am working on a prototype system. This is more of an idea implementation as it is a releasable project.

For now I am going to stick with codeigniter for version 1 of my project and learn the details of fuel during the next few months for a transfer to fuel for version 2 (maybe 3 not sure yet).

Despite this I will still be post lots about my discoveries of fuel, mainly because it is new and it strikes me as the next big thing in php frameworks.

Fuel PHP – First Impressions

There are two main competing objectives of any framework. It needs to be fast and it needs to do everything that the user needs. The irony is that often the users needs are greater than the speeds they desire. This Dichotomy of a users desires may drive diversity, but it also encourages the search for the perfect medium, speed and functionality.

Fuel – The php framework – is simple and easy to use, provided that you are comfortable using the command line enough that you can change directory and edit a few files. It is fast. The first thing that I did in testing was download, install and load it up in the browser. The page rendered in less than 0.01 seconds and used only 1.34mb of memory (same speed but less memory footprint than the base codeigniter install). The design of the home page was fresh and clean. If nothing else it leaves you feeling optimistic. Always a good feeling to have when you first start using a new technology.

Something that strikes my as clever is the simplicity of the framework. It gets out of your way when you coding. In other attempts to do this you always felt like you have to completely separate your code from the frameworks and carefully knit them together later. Fuel has cleverly taken design initiatives that web developers have been discovering of over the last 2 years and applied them into a clean, fresh and unobtrusive style. Allowing a free flowing feeling when a user is coding.

The Fuel website is a real gem (no ruby intended ๐Ÿ™‚ ). Clean and simple and has everything you need. The documentation is good, but probably not awesome. It can be a little fiddle to navigate, maybe I need to spend a little bit more time using it.

On doing some research, there appears to be a slight ‘contradiction’ between the use of codeigniter and Fuel, as much of the functionality is quite similar. In my opinion however, I feel that this Fuel is quite an improvement upon this and other php frameworks but hey, I only just started.

I would like to finish this short post with a quick question. Do you use a php framework, and what do you think of the ones you use.

Making the jump – Codeigniter to Fuelphp

One of the issues that seems to come up for me often is the need to rapidly create a launchpad for my ideas. Usually this means some form of webpage that performs a particular function or perhaps a blog post or something creative. The problem is that creation takes time and as a university student I don’t have the time to spend fiddling around with a development environment to achieve exactly what I need.

Up until now I have used Codeigniter as my default development platform. I haven’t created any live pages as I can not afford to have a server off campus to host my “dev doodles” and my university blocks outside access into my web home web server. None the less, I have been using Codeigniter for some time now and I love the simplicity of it, and have built much of my own functionality into it. For those who do not know, Codeigniter is like the pre-made foundations to a backend of a website.

But today I ran into a realisation, like a truck bearing down on me. I have been noticing that my code it getting bloated, for example I was needing 8 lines of code to load a view instead of one. And while normally this wouldn’t bother me, I have come to the conclusion that Codeigniter is no longer performing optimally for my needs.

So I have decided to make the jump, to stop using codeigniter and start using fuelphp. Fuelphp, is a knew discovery, sort of. I have seen it before, and even viewed it’s source but until now it has been in development, only just having released its version 1.0.

Over the next few days I have decided to transform my current project, a personal cms for my dads photography from codeignier code into fuelphp code. I am hoping for a smooth transition, but we all know thats not going to happen, lifes just not that fair. And so I will document the transformation and let you know just how it works out.

Installing Ruby RVM on Ubuntu and Fedora

Installing ruby on Linux is easy, just run sudo apt-get install ruby or yum install ruby. However, version control can be difficult to manage. That is, scripts that run on a version on your computer may not run as well on another. So wouldn’t it be great if you could have 2 or more versions or the ruby interpreter on your computer.

To do this we will use the RVM – Ruby Version Manager. This is a great program, Allowing you to have complete environments for running ruby. This includes the interpreter and gems. And besides the few intricacies of setting it up, It is relatively easy to do.

My instructions are fairly similar to the official RVM instructions. You can find them at and more about RVM at there index page.

OK. Lets go..

Firstly make sure that you have a version ruby installed and curl for downloading the script (most distributions come standard with this, although minimal setups will not.

sudo apt-get install ruby curl

yum install ruby curl

Now make sure that you are logged in as the user that you want to install ruby for. This may be a no brainier however, if you have more than one user you may wish to install ruby for everyone or for a specific person. I would very much suggest NOT install RVM for everybody, because different users may choose to run different ruby interpreters which may cause problems latter on down the track.

Time to get dirty with the command line.

Open up a terminal session and cd to your home directory. The first thing is to download the install script and run it in bash

bash < <(curl -s

Once the script has run issue the following command to load RVM every time you login.

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

Now you need to close all your open terminal windows and then launch another. When the new one is open execute the following.

source .bash_profile

Now, to test that we have done all the previous correctly you need to use the following command and compare the results.

type rvm | head -l

The should output 'rvm is a function'

Thats it. Ruby Version Manager has been installed. Unfortunately, just having it installed is not much good, we need to look at gemsets and ruby versions, but that is for another post.

Ruby, The OOP language of the future

Ruby is AWESOME.

Yes thats right awesome. Ruby is a language that is both simple and powerful. It is completely object orientated, where everything that you work with is an object. That is numbers, strings, data structures and any program construct that you can think.

Created in japan by Yukihiro โ€œmatzโ€ Matsumoto and released in 1995, It has since grown into a widely used langauge, in the top 10 listed languages on github project language page. This is mostly due to the natural order of programming, having a limited amount of clutter.

Ruby is also an interpreted language. We will go into this more later, but essentially means that it runs inside a special program that is built to take the ruby code and execute it. It is not necessarily the fastest interpreted languages, but it is one of the most powerful. There is a number of different interpreters, invoking different mechanisms and built in different languages (the major ones are c and java). This allows the user to implement different interpreters depending on the execution environment.

Lets look at some code, how about a hello world program. But first we need to install ruby on our machine. For ubuntu and fedora the code for installation is as follows.

sudo apt-get install ruby1.8 rubygems1.8

yum install ruby.i386 ri.i386 ruby-mode.i386

Now create a file named helloworld.rb and put the following line on the first line.

puts "Hello World!"

Yep thats it. Run it in the command line by using ruby helloworld.rb and it will output will be the string Hello World! This ease of use is due to mostly to the number of executed lines of per line of ruby code, averaging around 15 per ruby line.

Before continuing on with more examples, finishing of this post on ruby will be about ruby on rails, the new web programming application which comes inbuilt with its own web server and many other features.

Rails as its collectively known, was released to the public in 2003 by David Heinemeier Hansson, although now is actively developed by a team of 1600 community developers lead by a core team. The core concept behind rails is that it allows you to right the beautiful code of your ruby apps, in a web environment.

Thats about all for a first introduction of ruby, next time i will show you how to set up a working environment for deploying ruby on your machine (Linux first and then windows and mac). Why not read up on the ruby programming language.

%d bloggers like this: