Learning PHP and MySQL
Getting started
To run php scripts you'll basically need a web server. If you already have a web host (for example
hostgator) then you can already run php scripts. Just create a text file on your computer, give it a .php extension and copy it to your website (either through the websites control panel or by using an ftp program such as
filezilla)
For example the classic hello world program - copy this and save as helloworld.php, upload it to your web host and then call http://www.yourwebsite.com/helloworld.php
<html>
<head>
<title>PHP Test</title>
</head>
<body>
<?php echo '<p>Hello World</p>'; ?>
</body>
</html>
Installing a local web server
You can continue to use a remote web server, nothing wrong with that, but it does depend on having an internet connection and it is a live site so you need to be careful. For development, it would be better to install a local web server. Then its not so critical if you make a mistake, then transfer to your webhost when you are ready.
The main web server used for PHP development is
Apache. This can be installed as part of a bundle called
LAMP - which contains Linux, Apache, Mysql and PHP. There are bundles for Windows and Mac too, the most popular being
XAMPP.
I got pretty fed up of developing in Windows for lots of reasons so I moved to Ubuntu (Linux) in 2008. I would strongly recommend switching to Ubuntu for PHP development. The main reasons are its quicker, its really easy to install stuff and best of all, its all free. Rather than make a complete jump, I installed Ubuntu on my laptop as a dual boot alongside Windows. But I very rarely use Windows now so its just eating disk space now. So for the rest of the blog, I will be assuming you are using Ubuntu or any other flavour of Linux.
To install LAMP on Ubuntu, just follow
these instructions. Basically go to the terminal Applications -> Accessories -> Terminal and enter
sudo apt-get install apache2 php5-mysql libapache2-mod-php5 mysql-server
Make sure you make a note of the root password for mysql.
Once installed you can go to
http://localhost to test your webserver is working - if it says "It Works!" then erm... it works :)
The default folder for Apache web files is /var/www - so the "It works!" display is in the file /var/www/index.html. You can create another html file and drop it into /var/www
You will also need phpmyadmin which is a great application for managing MySql. To install it, again from the terminal enter
sudo apt-get install phpmyadmin
Files, Folders and Permissions
I like to keep all my code in /var/www/projectname type folders. But the problem is a normal user doesn't have access to the directory by default. So I run the following commands from the /var/www directory. Linux purists will say its a terrible thing to do, but it works for me.
sudo chgrp -R www-data projectnamefolder && sudo chown -R myusername projectnamefolder && sudo chmod -R 775 projectnamefolder
Replace projectnamefolder with your website folder name and myusername with your username.
You can also have a local directory eg /home/username/public_html and do lots of wizardry things with
Apache virtual host, but I'd rather be developing than messing with Apache.
You might need to make changes to the php.ini configuration file. This is in /etc/php5/apache2/php.ini. You'll need to edit the as root - for example
gksudo gedit /etc/php5/apache2/php.ini