Apache is not interpreting .PHP files
I recently downloaded OpenSUSE OS version 11.4 from the site to use it as a server..In order to do that I downloaded the server edition that has Apache/2.2.17 and PHP5 downloaded by default.....Ok till now it is fine
Now I started the Apache successfully and put a test.php file in the documentRoot directory.
test.php contain only <?php phpinfo() ?>
Then using my browser I typed http://localhost/test.php
and here was the problem
the browser didn't display what phpinfo()
should display, instead it asked me whether I want to open or save test.php...which is driving me crazy....
I googled a lot but no solution
THis is /etc/apache2/conf.d/php5.conf
<IfModule mod_php5.c>
AddHandler application/x-httpd-php .php4
AddHandler application/x-httpd-php .php5
AddHandler application/x-httpd-php .php
AddHandler application/x-httpd-php-source .php4s
AddHandler application/x-httpd-php-source .php5s
AddHandler application/x-httpd-php-source .phps
DirectoryIndex index.php4
DirectoryIndex index.php5
DirectoryIndex index.php
</IfModule>
One thing worth trying, is verifying that your project is not in a user dir (public_html folder), or that the configuration in php5.conf (/etc/apache2/mods-available/php5.conf for some configuration) allows such interpretation.
<IfModule mod_php5.c>
<FilesMatch "\.ph(p3?|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
<FilesMatch "\.phps$">
SetHandler application/x-httpd-php-source
</FilesMatch>
# To re-enable php in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.
#<IfModule mod_userdir.c>
# <Directory /home/*/public_html>
# php_admin_value engine Off
# </Directory>
#</IfModule>
</IfModule>
You can check what's inside
nano /etc/apache2/mods-available/php5.conf
also you can check
sudo dpkg -S php5 | grep libapache2-mod-php5
which shows whether you have php5.conf in mods-enabled
I've got there:
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
SetHandler application/x-httpd-php
</FilesMatch>
Note that this regexp matches .php5, but for some reason could not match .php.
Solution
apt-get remove libapache2-mod-php5 ; apt-get purge libapache2-mod-php5; apt-get install libapache2-mod-php5
then open
nano /etc/apache2/mods-enabled/php5.conf
-
and replace
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
with
<FilesMatch ".+\.ph((p[345]?)|t|tml)$">
-
or simply execute
sudo perl -pe 's|\Q.ph(p[345]?\E|.ph((p[345]?)| if $. <= 3' /etc/apache2/mods-available/php5.conf
and restart apache
sudo service apache2 restart
Take a look at PHP documentation and make sure the configuration is right
http://www.php.net/manual/en/install.unix.apache2.php
This should be in your httpd.conf
LoadModule php5_module modules/libphp5.so
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
Probably you have no apache2-mod_php installed.
Try to zypper install apache2-mod_php5
or whatever package name zypper search apache | grep php
shows you.