Php – Apache is sending php files to the browser instead of parsing

apache-2.2mime-typePHP

I have to set up PHP on an existing web host. I have made a virtual host entry, but for some reason Apache is sending the PHP to the browser instead of parsing.. from googling around it looks like it's a problem with the mimetypes, but I'm not an Apache expert by any means, so if anyone could help it would be appreciated…

I have the following in my httpd.conf:

AddHandler php5-script php

DirectoryIndex index.html index.phtml index.php index.phps

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

The PHP module is loaded into Apache:

/usr/sbin/apachectl -M

Loaded Modules:

core_module (static)

mpm_prefork_module (static)

http_module (static)

so_module (static)

auth_basic_module (shared)

auth_digest_module (shared)

authn_file_module (shared)

authn_alias_module (shared)

authn_anon_module (shared)

authn_dbm_module (shared)

authn_default_module (shared)

authz_host_module (shared)

authz_user_module (shared)

authz_owner_module (shared)

authz_groupfile_module (shared)

authz_dbm_module (shared)

authz_default_module (shared)

ldap_module (shared)

authnz_ldap_module (shared)

include_module (shared)

log_config_module (shared)

logio_module (shared)

env_module (shared)

ext_filter_module (shared)

mime_magic_module (shared)

expires_module (shared)

deflate_module (shared)

headers_module (shared)

usertrack_module (shared)

setenvif_module (shared)

mime_module (shared)

dav_module (shared)

status_module (shared)

autoindex_module (shared)

info_module (shared)

dav_fs_module (shared)

vhost_alias_module (shared)

negotiation_module (shared)

dir_module (shared)

actions_module (shared)

speling_module (shared)

userdir_module (shared)

alias_module (shared)

rewrite_module (shared)

proxy_module (shared)

proxy_balancer_module (shared)

proxy_ftp_module (shared)

proxy_http_module (shared)

proxy_connect_module (shared)

cache_module (shared)

suexec_module (shared)

disk_cache_module (shared)

file_cache_module (shared)

mem_cache_module (shared)

cgi_module (shared)

version_module (shared)

fcgid_module (shared)

perl_module (shared)

php5_module (shared)

proxy_ajp_module (shared)

ssl_module (shared)

And this is my virtual host entry:

<VirtualHost 10.16.140.113:80>

ServerName   viridor-cms.co.uk

ServerAlias  www.viridor-cms.co.uk

UseCanonicalName Off

DocumentRoot /var/www/vhosts/viridor-cms.co.uk/httpdocs

CustomLog /var/www/vhosts/viridor-cms.co.uk/cms-access_log common

ErrorLog /var/www/vhosts/viridor-cms.co.uk/cms-error_log

DirectoryIndex index.php index.html

<IfModule sapi_apache2.c>

php_admin_flag engine on

php_admin_flag safe_mode on

</IfModule>

<IfModule mod_php5.c>

php_admin_flag engine on

php_admin_flag safe_mode on

</IfModule>

AddType application/x-httpd-php .php

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

</VirtualHost>

Please help, my head is so sore from banging it against the table and the wall!


Thanks for responding.. 🙂

i have added your suggestion

[warn] module php5_module is already loaded, skipping

Stopping httpd: [ OK ]
Starting httpd: [Mon May 24 15:02:27 2010] [warn] module php5_module is already loaded, skipping[ OK ]

but the server is still sending a application/a-httpd-php file to the browser..

the url is http://viridor-cms.co.uk and a local hosts file entry needs:

89.206.183.89 viridor-cms.co.uk

thanks 🙂

Best Answer

add the lines belove to your httpd.conf or apache2.conf

<IfModule mod_php5.c>
  AddType application/x-httpd-php .php .phtml .php3
</IfModule>

& remove the addhandler line AddHandler php5-script php

then restart apache.

apache will understand php engine will be used for .php extensions by this line application/"x-httpd-php"