Monday 21 May 2012

Configuring CakePHP for an OSX local install


I am currently learning some of the technologies involved in building web based applications, following ideas from the Software as a Service course.

Currently I'm looking at PHP and the CakePHP frameworks.

Obtain the source

Download and unzip the package from the CakePHP website
Rename to a suitable folder, I have put mine in Sites/ScoutCamp.

Set up Apache

Edit your sites file sudo nano /etc/apache2/users/username.conf
   Options FollowSymlinks
   AllowOverride All
   Order allow,deny
   Allow from all

Restart apache sudo httpd -k restart and open a browser to your shared pages.

Lots of errors and messages

First time I fired up the browser I thought “Oh dear me” or at least something along those lines.
Unlike my trial of Ruby on Rails, there were loads of errors and configuration changes that were required.

I have solved most of the problems, but still have one left to suss out.

Timezone settings

In app/Config/core.php there is a line (it was 232 on my build)

   //date_default_timezone_set('UTC');

Uncomment and set to your timezone - Newcastle is in the same timezone as London.


   date_default_timezone_set('Europe/London');

Unable to write 'cake_dev_en-us' to File cache

The app/tmp folder needs to be writable by the web user.
To find out who this is, add the following bit of code to app/View/Pages/home.ctp


   


On my system, the web user is _www, so change the owner:
   sudo chown -R _www app/tmp/

This cleared up all the errors above the title.

Please change the value of “Security.salt” and “Security.cipherSeed”

In app/Config/core.php find the lines and change to a more suitable value. I used sha1sum to generate the salt, and pasted for the salt. The Seed I just typed a few numbers at random.


   df  | shasum

Setting the database connection

You need to create your database using mysql (there are other options, but that's the one I went with).

Copy database.php.default to database.php and add your user and database details. Note that for some reason, OSX will not work user localhost (and that took a day to track down).

   public $default = array(
      'datasource' => 'Database/Mysql',
      'persistent' => false,
      'host' => '127.0.0.1', // Note change from localhost
      'login' => 'ScoutCamp',
      'password' => 'yourPassword',
      'database' => 'ScoutCamp',
      'prefix' => '',
      'encoding' => 'utf8',
   );

URL Rewriting

This is the only bit I haven't worked out yet, but I want to make a start developing my site and will come back to this.



Saturday 19 May 2012

Administrating a mySQL database with phpMyAdmin

Just a quick gotcha for OSX, mySQL and phpMyAdmin.

I had successfully set up mySQL and secured the default accounts with passwords. Although shipping a product without passwords may be thought of as a security hole, it is just as bad as shipping with a default password.

Downloaded and installed phpMyAdmin onto the macbook and configured according to instructions. 

Did it work? Did it heck! 

After a while googling for answers, I read through another install guide (although for Lion not Snow Leopard) and found this gem: 

Edit config.inc.php using your favorite editor (I prefer vi) and change$cfg['Servers'][$i]['host'] = ‘localhost’; to $cfg['Servers'][$i]['host'] = ’127.0.0.1′;*Well it sounds stupid because localhost and 127.0.0.1 are same in networking world but phpMyAdmin won’t let you (At least me) log in without this change and keeps throwing error “#2002 Cannot log in to the MySQL server
This is one of the classic IT gotcha's: two things that are supposed to give the same result don't. I'm almost tempted to see if it is the same on a linux machine, but don't want to get diverted.

Next steps will be to start reading up seriously on PHP MVC frameworks - I'm currently looking at cakePHP.

I really can't remember how we did this stuff before the internet was available, and many of the younger developers probably can't imagine the idea. Perhaps that is why I have a largish collection of computing books going back to VB5 and Access 2 in my bookshelves. Although that could just be because I hate to get rid of books.

Friday 18 May 2012

Plurals are important, CSS, bookshops and sniffing books

The usual warning applies: I am writing mainly for myself on topics that interest me. I'm not bothered if you're not interested in them.

When I stopped coding last session, I was sitting with an interesting problem to solve: the code to include the header and footer wasn't working.

After spending too much time going line by line through the code, I eventually noticed something painfully obvious: I had misspelt a folder name and missed the trailing 's' from templates.

Sigh.

When I get some spare time, I'm going to have a long hard look to see if there is a good visual editor for css files. A quick look didn't find one, and I'm more interested in getting to doing some coding.

I do find css more than a little frustrating at times, and I should probably go back to first principles and relearn using the latest standards - this would be a good excuse for a trip to a good bookshop, but both my favorites have closed (that's Borders and the Waterstones branch in the MetroCentre).

When I buy a book I like to hold it and I really love the smell of a new book. It's even more important for technical books to have a look at the actual contents before deciding to buy. Once I've decided I want the book, I'll get it then and there - I don't like the delay between ordering and getting a book delivered (even if it works out cheaper).

Most of my inspiration for the html and css was taken from the "CSS: The Missing Manual" book.

Wednesday 16 May 2012

Learning PHP the hard way

I have been given a challenge: to learn PHP well enough to demonstrate my programming prowess.
Most people will have no idea what PHP is, and probably care less. Not to worry, read on and you will possibly learn more than you are interested about.