One of the questions I receive most often is: "I just installed Apache, and I'm trying to get X running, but when I go to the website, the browser keeps trying to download .php files instead of displaying them. What do I do?"
If you've already installed a LAMP server but that server is not processing PHP files, there are steps you must take in order to get those PHP web pages served up properly. I'll walk you through this so you can get sites such as Joomla!, Drupal, and XOOPS up and running without pulling your hair out. For this tutorial, I will configure a LAMP server on a Debian-based system that installs Apache2. For variations on this setup, the steps will differ, but the fundamentals are the same.
Additional steps to the LAMP server installation
Even after installing the LAMP server, pieces of the puzzle that are required for proper PHP processing might not have been installed. Below are the commands necessary to get those pieces installed (all of these commands are issued from within a terminal window):
- sudo apt-get install php5-common php5 libapache2-mod-php5
- sudo apt-get install php5-cli
- sudo apt-get install php5-cgi
- sudo apt-get install php5-mysql
Once this is done, the PHP module must be enabled so it is usable by Apache. To enable the PHP module, you need to issue the command a2enmod and choose php5 (type php5 and hit [Enter]). Now you need to restart Apache with the command sudo /etc/init.d/apache2 restart or the command sudo service apache2 restart.
Apache configuration file changes
You must change options in the Apache configuration file. (I will be editing the /etc/apache/apache2.conf file.) You need to add the AddType directives, which can be placed at the bottom of the apache2.conf file. Open the apache2.conf file in your text editor and look for the line DirectoryIndex index.html. Add index.php to the DirectoryIndex line. Now skip to the end of that same file and add these two lines: AddType application/x-httpd-php .php3 .php and AddType application/x-httpd-php-source .phps. Save and close that file. You should restart Apache one more time for good measure.Testing Apache
For a very simple php test, you should create the file /var/www/test.php with the following contents:
<?phpecho("<h1>If you can see this, PHP and Apache are working!</h1>");
?>
Save and close that file and then point your web browser to http://ADDRESS_TO_APACHE_SERVER/test.php (ADDRESS_TO_APACHE_SERVER is the actual address to the server). If you see the text success message "If you can see this, PHP and Apache are working!", you have an Apache server that is correctly processing PHP. If you're still getting the downloading behavior, you should clear your browser's cache and try again.
Log files
If none of the tips I described thus far have helped, I recommend looking at the Apache log files to see if you can track down the problem. Apache likes the following logs (all found in /var/log/):
- access.log: This log keeps track of any connection made to your server.
- error.log: This log keeps track of any errors that occur with Apache.
- other_vhosts_access.log: This log is where virtual hosts will log when the virtual host has not been prescribed its own log file.
Conclusion
Apache is a fairly complex system that often becomes more challenging when modules are added. In my experience, the PHP module stumps new Apache admins more than any other module.
Is there a feature or a function of Apache that has stumped you? If so, email me your question, and I'll do my best to answer it. (Read guidelines about submitting DIY questions.)
Full Bio
Jack Wallen is an award-winning writer for Techrepublic and Linux.com. As an avid promoter/user of the Linux OS, Jack tries to convert as many users to open source as possible. His current favorite flavor of Linux is Bodhi Linux (a melding of Ubuntu and Enlightenment). When Jack isn't writing about Linux he is hard at work on his other writing career -- writing about zombies, various killers, super heroes, and just about everything else he can manipulate between the folds of reality. You can find Jack's books on Amazon, Barnes & Noble, and Smashwords. Outnumbered in his house one male to two females and three humans to six felines, Jack maintains his sanity by riding his mountain bike and working on his next books. For more news about Jack Wallen, visit his website Get Jack'd.
