我最近从网站下载OpenSUSE操作系统版本11.4,以使用它作为服务器..为了做到这一点,我下载了Apache / 2.2.17和PHP5默认下载的服务器版…..好吧,直到现在精细
现在我成功启动了Apache,并将一个test.php文件放在documentRoot目录中。 test.php只包含<?php phpinfo() ?>
然后使用我的浏览器我inputhttp://localhost/test.php这里是问题的浏览器不显示什么phpinfo()应该显示,而是问我是否要打开或保存test.php …这是让我疯狂的….我GOOGLE了很多,但没有解决scheme
这是/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>
有一件值得尝试的事情是validation你的项目不在用户目录(public_html文件夹)中,或者php5.conf中的configuration(/etc/apache2/mods-available/php5.conf用于某些configuration)允许这样的解释。
<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>
你可以检查里面是什么
nano /etc/apache2/mods-available/php5.conf
也可以检查
sudo dpkg -S php5 | grep libapache2-mod-php5
它显示了你是否已经启用了mods的php5.conf
我到了那里:
<FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler application/x-httpd-php </FilesMatch>
请注意,这个正则expression式匹配.php5,但由于某些原因不能匹配.php。
解
apt-get remove libapache2-mod-php5 ; apt-get purge libapache2-mod-php5; apt-get install libapache2-mod-php5
然后打开
nano /etc/apache2/mods-enabled/php5.conf
并更换
<FilesMatch ".+\.ph(p[345]?|t|tml)$">
同
<FilesMatch ".+\.ph((p[345]?)|t|tml)$">
或者干脆执行
sudo perl -pe 's|\Q.ph(p[345]?\E|.ph((p[345]?)| if $. <= 3' /etc/apache2/mods-available/php5.conf
并重新启动Apache
sudo service apache2 restart
看看PHP文档,并确保configuration是正确的
http://www.php.net/manual/en/install.unix.apache2.php
这应该在你的httpd.conf中
LoadModule php5_module modules/libphp5.so <FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>
听起来像mod_php5以某种方式被禁用
尝试(作为根)
a2enmod php5 service apache2 restart
然后尝试再次访问页面
suse / opensuse中的apache模块从/ etc / sysconfig / apache2启用,在需要的地方包含php模块,运行SuSEconfig并重新启动apache2服务:)
http://wiki.apache.org/httpd/DistrosDefaultLayout#openSUSE_and_SLES_.28Apache_httpd_2.2.29 :
我想出了以下解决scheme来解决同样的问题。 在/etc/httpd/conf/httpd.conf中更改以下指令。 我仍然需要理解为什么这改变了Apache的行为,但它对我有效。
改变这个:
<Directory /> Options FollowSymLinks AllowOverride None </Directory>
对此:
<Directory /> Options None AllowOverride None </Directory>
我在/etc/sysconfig/apache2添加了php5到一行。在/etc/sysconfig/apache2启动APACHE_MODULES="actions alias auth_basic authn_file authz_host authz_groupfile authz_user autoindex cgi dir env expires include log_config mime negotiation setenvif ssl userdir reqtimeout authn_core authz_core" 。
可能你没有安装apache2-mod_php。 尝试zypper install apache2-mod_php5或任何包名称zypper search apache | grep php zypper search apache | grep php显示你。