Servers
& PHP
If you're already running a web site with PHP, then either you or your
hosting company has setup a server and configured it to be able to handle
PHP pages. Most of us small timers use hosted web space at GoDaddy,
Fortune City, or Yahoo, where their IT professionals have configured
everything optimally for our benefit.
However, there may be a time when you have to host your own server
or have the oppurtunity to cofigure it yourself. If you're like most
of the population, you probably are running either IIS on windows or
Apache on windows or your favorite flavor of *unix. My exprience combines
both IIS and Apache, but I prefer running Apache at work, or other environments
where I have complete control over the servers. Apache has more configuration
options, and that the main reason for my preference. The standard IIS
server setup works perfectly well, but lacks pizzaz, and integrates
better with ASP (if that is your language of choice) than PHP. If you're
going to set up a professional PHP web server, you're going to want
to use Apache. Setting up Apache and configuring it securely with PHP,
MYSQL, and other necessities isn't for the faint of heart, but there
is enough information on their respective sites to help.
Fortunately for those who may be losing interest, configuring a server
from scratch isn't what this article is about. I recently had the chance
to evaluate three different related but different Zend products to use
in an enterprise environment, to host a business critical application
on Windows Server 2003. Zend, for those of you who don't know, claims
to be "The PHP Company." They are probably right, and are
actually the company that certified me as a Zend Certified PHP Engineer.
The make some pretty serious applications that combine a web server
with PHP, and a front end GUI to administer them. Best of all, they
are free (a support contract does cost moneyt, but isn't required.)
Zend Core 1.5 and 2.0 Beta
Zend Core 2.0 Beta is their single server solution that combine Apache
(you can also you your own already installed Apache) with PHP and a
front end GUI. Zend Core even adds phpMyAdmin, MYSQL, Zend Accelerator,
and the Zend Optimizer to the mix. Best of all, they are both free.
As you can imagine, installing all these in one fell swoop seems too
good to be true. And it is, to a point. I had serveral problems while
installing Zend Core, where I had to backup a few steps and redo some
things. In the end, the bundled Apache version, PHP, and MYSQL were
all working fine and being served quickly while being sped up by the
Zend Optimizer and Accelerator. Unfortunately, phpMyAdmin wasn't having
any of it. Almost every other request resulted in a Internal Server
Error. (Creating a new database using phpMyAdmin ALWAYS resulted in
a server error, though refreshing it would always then complete the
request.) I read several threads on the official Zend forum relating
to this same problem, with many users experiencing the same problem
which remains unresolved. The possibility of users experiencing Internal
Server errors while using a business critical application was far too
great to continue, so I uninstalled this undeniably Beta version
and proceeded with the lastest stable build, Zend Core 1.5.
Zend Core 1.5 doesn't include include MYSQL, phpMyAdmin, the Zend Optimizer
or the Zend Accelerator, nor does it support the latest PHP 5.2 or Apache
2.2 branches. What's the point you say? Well it does include the stable
branch of Apache 2.0, PHP 5.1, and a pleasing yet useful user interface.
Actually called Zend Core for IBM on the Zend site, this package optionally
installs an IBM database on your computer too - though I opted to install
my own MYSQL database, the open source industry standard. I also downloaded
the Zend Optimizer product individually from the site (also free) and
installed it through its wizard with no trouble whatsoever. Then, I
went to the phpMyAdmin site and downloaded it and installed it easily
(though I've installed phpMyAdmin quite a few times before.) After these
extra steps, I pretty much had everything the Zend Core 2.0 Beta had,
but without the potential headaches of a Beta application.
The real power of the zend core is that it is a central place that
monitors the performance of PHP and Apache and can make changes to the
PHP configuration file and load/unload using its user interface. It
satisfies those of us who want confirmation everything is working through
status messages and bar charts. It also has the ability to run performance
benchmark tests and hook into Zend's development IDE, Zend Studio. My
own benchmark suite showed that this configuration with the Zend Optimizer
ran a little faster than a manual setup of just Apache and PHP installed
using FastCGI, but not as fast the Zend Core 2.0 Beta, with PHP also
configured in Apache using FastCGI. FastCGI is an improvement on the
older CGI (common gateway interface server techonology). The other option
for manually installing PHP is as a Module in Apache, but this is not
recommended by most PHP professionals and may perform slower than FastCGI
anyways. Zend Core 1.5 doesn't even offer the option of installing into
Apache as a module, so that should pretty much sum up their stance on
the issue.
Zend Platform 2.2.3
Zend Platform, is Zend's take on the combined server solution, but
focused for a larger enterprise production environment. It even supports
controling multiple servers through one interface. The pricing model
is not readily available, and it looks as though you have to call their
sales line to discuss pricing. Nevertheless, they do offer a trial version
which works even though it tells you that your license is expired. You
are required to have a version of Zend Core installed before installing
Zend Platform.
The interface of the product is pretty much the same, though definetly
focused on managing more than one server. Problem is, serving PHP pages
didn't work for me. After restarting the server I received a fatal error
relating to fastCGI, and could not get rid of this error upon future
restarts. Pages showed up, but the load times were incredibly slow,
and parts of the console repeated the license expired mesage and could
not even be accessed, and the afrorementioned internal server errors
linked that I experienced with Zend Core 2.0 also appeared. I then re-installed
the entire package on another machine (this time, Windows XP SP2) and
experienced the same trouble.
Conclusions
At some point in the near future, I'll test the Zend Platform again,
and I'll dilligently check for updates to the problem found with Zend
Core 2.0 Beta. Until then, It's Zend Core 1.5 all the way - bringing
a little civility to that php.ini file.
Update - 2/15/07
After installing Zend Core 2.0 Beta again, I was able to avoid those
ugly internal server error messages mentioned above, and was pleased
with the end result enough to contemplate using Core 2.0 (still beta)
for a production application. My second try with Zend Platform (this
time the just released 3.0 version) was not as lucky, and I had the
same troubles as the earlier installation. I will forge ahead with Zend
Core 2.0 Beta and hopefully the stable production build will be released
before my application's launch date. |
| Setting Up PHP, Apache, and MYSQL manually |
| Apache.org - Download
the latest stable Apache build and install it before anything
else. Apache's Installation instructions (online documentation
section) cover a wide variety of operating systems and potential
configurations |
| PHP.net - Download the latest
stable PHP build and install it. Use PHP's online documentation
for Apache installation instructions. |
| MYSQL.org - Downloading
and installing this open sourced database is easy. Actually using
it and configuring your tables is a little more complicated. I
recommend installing phpMyAdmin to handle the database setup using
a friendly GUI style interface. |

Configuring the php.ini file using Zend Core 1.5's user interface.

The main dashboard of Zend Core 1.5
| Getting Zend Core |
| Zend Core is free and available for download from Zend.com. |
| phpMyAdmin |
| If you're using mysql, you need this front end web
interface to manage your database. phpMydmin.net |
|