Pages

Sunday 10 April 2011

Setting up the Environment

For this semester we will mainly be focusing on the server side scripting language PHP. This blog post will go through the entire process of setting up everything that is required before we can start hacking into the PHP language itself.

Setting up XAMP

Up until a couple years ago, if you wanted to configure a local development environment where you can deploy and test PHP applications, you would have to spend hours reading through contradicting documentation from various vendors to install and get Apache, PHP and mySQL to work.

Fortunately, that is now a thing of the part thanks to XAMPP. XAMPP is a pre-configured packaged solution which primarily contains the Apache web-server, the mySQL database server and the PHP interpreter. After XAMPP has been fully installed all services can by controlled from the XAMPP control panel.





Common issues when trying to start Apache

The most common reason why Apache may fail to start is that some other program is already listening on port 80 or 443 which are the default http/https ports.

To check what program is listening on these ports type the following command in cmd.

netstat -o -n -a | findstr 0.0:80 and netstat -o -n -a | findstr 0.0:443

If any of these commands return anything it means that those ports are already in use. The last number in the returned string is the pid (process id) and you can see what process it listening on that port by using the following command

Tasklist | findstr <pid>


As you can se from the above screenshot, VisualSVNServer.exe is already listening on port 443; you can either stop the process and retry starting apache or chose another port for apache.
SSH listen port can be configured from the following file xampp\apache\conf\extrahttpd-ssl.conf to 444 (after verifying that that port is currently not used)

Experimenting with XAMPP

Loading the main XAMPP page

By default the homepage on the installed apache server is the XAMP web interface, it provides the user with various tools vital to ensuring that the installation has been set-up properly and that the various services are running as expected.



Status Report

This page displays the same information as the desktop Control Panel, it shows the status of the various services installed through XAMPP.


In the above screenshot all services except Tomcat are activated.

Security Report

This report performs various security checks on the various services running through XAMPP, the below screenshot shows the security report for a freshly installed un-secured setup, the various checks also include details as to how to rectify the security issues. For e.g. changing the default ftp password.


phpinfo()

By seeing this page one can be sure that PHP has been installed and correctly loaded by the web server, this page lists the full details about the current PHP installation configuration as well as all modules/libraries loaded. This is usually the first place to look when certain functionality within an application is not working as expected on a server. This page can be easily generated from a simple PHP file by calling the phpinfo(); function directly.


Phone Book sample application

This sample application shows some simple PHP in action, it allows the user to create/remove entries from the phone book.

FTP Access

I used the winSCP ftp client to log in to the ftp server by setting the host to localhost, port to 21 (the port the ftp server was configured to listen on) with user 'newuser'.



Upon logging in, I had access to the ftp directory where I could create, edit and even upload files to the server, I created a test file in this directory to verify I had write access.


XAMPP also provides a shortcut to the FileZilla Server terminal (Available by clicking the admin button in the XAMPP control panel). The terminal outputs all activity going through the server as well as lists users currently connected to the ftp server.

This terminal also provides the admin with all functionality required to maintain the server, such as user account maintenance and directory permissions.


0 comments:

Post a Comment