# Why my web browser always downloads the .php page rather than show it?

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:

Listen 192.168.1.211:80

<VirtualHost 192.168.1.211:80>
DocumentRoot /usr/local/apache2/www/phpdir
ServerName www.phphost.com
<Directory "/usr/local/apache2/www/phpdir">
AllowOverride None
Require all granted
</Directory>
</VirtualHost>


I configured IP like this:

ifconfig eth0:1 192.168.1.211/24 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:

<?php
phpinfo();
?>


But when I typed http://192.168.1.211/test.php 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 </IfModule> ServerAdmin you@example.com ServerName 192.168.1.210:80 <Directory /> AllowOverride none Require all denied </Directory> DocumentRoot "/usr/local/apache2/htdocs" <Directory "/usr/local/apache2/htdocs"> Options Indexes FollowSymLinks AllowOverride None Require all granted </Directory> <IfModule dir_module> DirectoryIndex index.html </IfModule> <Files ".ht*"> Require all denied </Files> 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 </IfModule> CustomLog "logs/access_log" common </IfModule> <IfModule alias_module> ScriptAlias /cgi-bin/ "/usr/local/apache2/cgi-bin/" </IfModule> <IfModule cgid_module> </IfModule> <Directory "/usr/local/apache2/cgi-bin"> AllowOverride None Options None Require all granted </Directory> <IfModule mime_module> TypesConfig conf/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz </IfModule> <IfModule proxy_html_module> Include conf/extra/proxy-html.conf </IfModule> <IfModule ssl_module> SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> Include conf/vhost/*.conf root@javis:/usr/local/apache2/conf$

• can you please post your httpd.conf file ? – Rahul Jul 5 '16 at 16:05

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? – Julian20151006 Jul 6 '16 at 2:01

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

AddType  application/x-httpd-php         .php


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

• @Julian20151006 you can consider accepting answer by clicking on right mark below up/down arrow. – Rahul Jul 6 '16 at 13:02
• AddType and LoadModule have fixed my problem. Thank you very much , again. – Julian20151006 Jul 6 '16 at 13:58
• @Julian20151006 do you know how to accept answer ? Just in case if you don't know then follow this link. – Rahul Jul 6 '16 at 14:12
• @Julian20151006 are you new this site ? – Rahul Jul 7 '16 at 6:14