Advertisment

Deploying PHP Across Windows and Linux

author-image
PCQ Bureau
New Update

PHP is one of the most widely used scripting languages for developing web

applications. Since PHP has mostly been used for writing Open Source Web apps,

it's only natural to form the opinion that it will only work on an Open Source

platform, e.g. Linux and Apache. There's nothing wrong in believing that,

because the LAMP (Linux, Apache, MySQL, with Perl/PHP) platform was and

continues to remain very powerful. But the good news is that PHP is also

available on other platforms and is not restricted to working with LAM alone. So

the 'L' can be replaced with 'W' for Windows or 'S' for Solaris, the 'A' with 'IIS',

and the 'M' with SQL Server. You can therefore imagine that lots of permutations

and combinations can be formed due to this, giving web app developers more

choice. It would be very difficult to say which platform is better at this

stage, because a lot of it also depends upon the preference of web developers.

So in this article, we'll concentrate on three PHP combos: The traditional PHP

on Linux with Apache, PHP on Windows with Apache, and finally PHP on Windows

with IIS. For now, we've kept MySQL constant.

Advertisment

Direct Hit!

Applies To: PHP developers



USP: Learn to deploy PHP on


various platforms


Primary Link: php.net


Keywords: PHP, Apache, IIS7


IIS7 provides extra features to PHP that Apache does not. For example, you

can enable features like caching, HTTP redirection, role management and many

more without making any changes to PHP. With the inclusion of fastCGI module,

IIS not only provides a single thread environment for various extensions of PHP

(which exclusively require a single threaded environment) but can also persist

amongst various requests. This increases the performance and reliability. The

new IIS7 manager tool allows you to manage PHP, ASP.NET applications and IIS7

from a single window. Hence, you get ease of manageability. IIS7 also supports

web application installers, which let you deploy free applications with a single

click, for example DotNetNuke, Wordpress, Drupal and so on. The web application

installer also checks the system for pre-requisites and then automatically

downloads the chosen application for the source site. During installation, if

the downloaded application needs any configuration inputs then you are prompted

for in the process.

There are a couple

of all-in-WAMP solutions available, one of them is XAMP server, which

installs Apache, MySQL and PHP in one shot on Windows as well as Linux­­­.

Advertisment

We tried all three scenarios in our lab and our experience with all of them

was equally smooth. We'll take you through the process in this article, to help

you understand it better. Then we will deploy various open source solutions for

the three scenarios to see if there is actually any difference in functionality.

Let's begin.

PHP on Linux with Apache



We used Debian 5 Linux for this, and setting up PHP and Apache on it was a

breeze. All it required was to first install Apache using the # apt-get install

apache2, followed by another single line command to install PHP and MySQL, viz.

# apt-get install php5 mysql php5-mysql.

Make sure you have

selected IIS FastCGI option while installing IIS7 web server on Windows

Server 2008.
While installing

Apache make sure that you provide correct domain and host names, along with

proper admin email IDs.
Advertisment

PHP on Windows with Apache



In Windows, if you want to run PHP over Apache, you have two choices. One is

to download each individual component separately and install them one by one.

This will obviously be a lengthy process, and will require manual configurations

in Apache and PHP to integrate the three. You're likely to face several problems

here. The other option is to download the WAMP server, which can easily be

downloaded from www.apachefriends.org.

Choose the type of

database you need. Multifunctional database should be chosen if you are not

sure about the exact nature of transactions.
After unzipping

the PHP file on Windows Server 2008 you need to configure IIS7 for handling

PHP web pages.

Installing applications on Windows is no rocket science, and doesn't require

you to run any commands as you did on Linux. Simply run the setup file, follow

the onscreen instructions, and you're done. You can install it as a service that

runs in the background or otherwise. Once the installation is over, it

automatically starts the application and you have PHP with Apache and MySQL on

Windows configured and running. They're already integrated, so you can

straightaway get to developing your applications on the platform.

Advertisment

PHP on Winodws with IIS



Let's now look at how to install and configure PHP and MySQL on Windows with

IIS. We used Windows Server 2008 and IIS 7 for this purpose. You first need to

install IIS7 by going to Windows Server Manager, and adding a role from the

Actions menu. This starts off a wizard, where you need to check the web server (IIS

7) option. In the process, you'll need to choose the installation with fastCGI

support, when asked. You can skip the additional component installation part

when prompted as you won't require that. In a couple of minutes, IIS 7 web

server will be up and running.

Next comes PHP, for which you'll need to download the PHP setup file and

extract it in a folder in your 'c' drive, and rename the php. inirecommended

file to php.ini. You'll need to make a few configurations in IIS to handle PHP

files. For this, you'll need to open IIS Manager and select the server. On the

right pane, open Handler Mappings. In the rightmost action pane, select Add

Module Mapping. In the dialog box that comes up, enter *.php for type, FastCGI

for module, C:\php\php-cgi-exe for executable and PHP_for_IIS in the Names

field. For configuring PHP for MySQL, repeat the steps for the php.ini file in

PHP installation on Windows with Apache.

Next, you have to configure PHP to work with MySQL. For this, open the

'php.ini' file and specify where the extensions are located on the system and

uncomment the following lines:

Advertisment

extension_dir = "C:\php\ext"



extension=php_mbstring.dll


extension=php_mysql.dll


extension=php_mysqli.dll

Once this is done, restart IIS7, and your WISP platform is up and running for

action. We'd like to add one more point over here that the WISP platform offers

several features that are otherwise not available if you use Apache instead of

IIS7.

For example, you can enable features like caching, HTTP redirection, role

management and many more without making any changes to PHP.

Advertisment

Deploying Joomla and Limesurvey



Once the platforms are ready, you would obviously like to deploy

applications on them. Here again, there are quite a few Open Source apps

available for all three. For this article, we tried two of them--Joomla and

Limesurvey. Joomla is a powerful Open Source web content management application,

while Limesurvey is a powerful online survey management application. Both are

very widely used on the web. We hardly found any difference in setting up the

applications on all three platforms. There were permission issues in some

folders on IIS7, but similar issues were also faced on Linux.

We tried installing various components, modules and plugins of Joomla, all of

which happened very smoothly, without any errors on all three platforms. The

same story repeated with Limesurvey as well.

How they compare



Installation on Linux, ie Debian in our case, was pretty easy and even

integration with MySQL was simple. The installation of PHP along with MySQL on

Windows with Apache or IIS required some configuration changes before we could

deploy anything else. The time taken for that was between 2 to 3 mins. So, it is

only a matter of how comfortable you are on various platforms. If you like Linux

then Apache is good, else if you are an IIS aficionado then PHP can be

configured with it as well.

PHP is a very versatile language, which can be used on different platforms.

Next issue, we'll try out a few applications on PHP and check out the

performance on different platforms.

Advertisment