I installed a CentOS7 system in VMware Workstation. The host machine's OS is Win7; I compiled and installed apache2 (httpd) and MySQL in CentOS, and they both work well, I mean I can visit the index.html page from the host machine's web browser. Then I did

  1. wget php-5.5.37.tar.gz
  2. tar it
  3. configure it
  4. then make and make install it.

The configure commmand is like this:

[root@localhost:~/Downloads/php-5.5.37]# ./configure  --prefix=/usr/local/php \
--with-mysql=/usr/local/mysql  --enable-fpm

In /usr/local/apache2/conf/httpd.conf , I added Include conf/vhost/*.conf; And then I created /usr/local/apache2/conf/vhost/php.conf, edited it like this:

AddType application/x-httpd-php .php

    DocumentRoot /usr/local/apache2/www/phpdir
    ServerName www.phphost.com
    <Directory "/usr/local/apache2/www/phpdir">
        AllowOverride None
        Options Indexs FollowSymLinks
        Require all granted

I configured IP like this:

ifconfig eth0:1 up

I issued apachectl -t, the output is OK;

Then I typed apachectl restart, everything goes well; I create a test.php in /usr/local/apache2/www/phpdir, it contains:


But when I typed in the host machine's web browser's IP address bar , the page didn't show up as I expected. It turned up a download dialog , instructing me to download the page test.php. I guess that's because I didn't configure something, so httpd doesn't know where to find the php engine, right? What can I do ? By the way , I installed php in /usr/local/php.

EDIT : 1

httpd.conf content:

root@javis:/usr/local/apache2/conf$ grep -v ^# httpd.conf

ServerRoot "/usr/local/apache2"
Listen 80

LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule reqtimeout_module modules/mod_reqtimeout.so
LoadModule filter_module modules/mod_filter.so
LoadModule mime_module modules/mod_mime.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule env_module modules/mod_env.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule version_module modules/mod_version.so
LoadModule unixd_module modules/mod_unixd.so
LoadModule status_module modules/mod_status.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so

<IfModule unixd_module>
User daemon
Group daemon


ServerAdmin [email protected]


<Directory />
    AllowOverride none
    Require all denied

DocumentRoot "/usr/local/apache2/htdocs"
<Directory "/usr/local/apache2/htdocs">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted

<IfModule dir_module>
    DirectoryIndex index.html

<Files ".ht*">
    Require all denied

ErrorLog "logs/error_log"

LogLevel warn

<IfModule log_config_module>
    LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
    LogFormat "%h %l %u %t \"%r\" %>s %b" common

    <IfModule logio_module>
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio

    CustomLog "logs/access_log" common


<IfModule alias_module> 
    ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/"

<IfModule cgid_module>


<Directory "/usr/local/apache2/cgi-bin">
    AllowOverride None
    Options None
    Require all granted

<IfModule mime_module>

    TypesConfig conf/mime.types

    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz


<IfModule proxy_html_module>
Include conf/extra/proxy-html.conf

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin

Include conf/vhost/*.conf
  • can you please post your httpd.conf file ?
    – Rahul
    Jul 5, 2016 at 16:05

3 Answers 3


Correct AddType for php is application/x-httpd-php in httpd.conf

AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps

Also make sure your php module is loaded

LoadModule php5_module        modules/mod_php55.so

When you're configuring apache then try to view the page from another browser - I've had days when chrome stubbornly caches the result and it keeps downloading the source code while in another browser it's just fine.

You might have to do

$ a2enmod php5

Your server does not have the php interpreter running. You need to install php before the web server will try to execute the php code.

sudo yum install php

Restart apache for good measure (i think this might happen already in the installation of php though)

After this is installed your php pages should render as php and not be treated as plain text.

  • I think you are right. The php interpreter is not running , so the test.php is treated as plain text. But I have compiled and installed php in /usr/local/php. How can I start php , and let Apache know where to find the php interpreter? Jul 6, 2016 at 2:01

If you really have

    ServerName www.phphost.com

in that VirtualHost definition in your httpd.conf, it will only be used if the request is for a page on that domain, but your test asks for a page on

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .