Apache正在下载php文件,而不是显示它们

Apache正在下载php文件,而不是显示它们,php,apache,centos,Php,Apache,Centos,操作系统和服务器信息: CentOS 6.4(最终版) Apache 2.2.15 PHP 5.5.1 我之前安装了PHP5.3.x,但决定升级。我首先卸载了PHP5.3.x,然后安装了PHP5.5.1,但在安装完成后,apache没有解析php文件,只是下载了它们。我在stackoverflow中检查过类似的问题,但到目前为止没有一个对我有帮助 作为记录,我在httpd.conf和php.conf中有以下几行代码,它们应该可以让php工作,但不能: AddHandler applicati

操作系统和服务器信息:

  • CentOS 6.4(最终版)
  • Apache 2.2.15
  • PHP 5.5.1
我之前安装了PHP5.3.x,但决定升级。我首先卸载了PHP5.3.x,然后安装了PHP5.5.1,但在安装完成后,apache没有解析php文件,只是下载了它们。我在stackoverflow中检查过类似的问题,但到目前为止没有一个对我有帮助

作为记录,我在httpd.conf和php.conf中有以下几行代码,它们应该可以让php工作,但不能:

AddHandler application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml
AddType application/x-httpd-php-source .phps
AddHandler php5-script .php
我真的很感激任何帮助。 多谢各位

编辑:

我在php.conf中有这些行

<IfModule !worker.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
apache不再下载该文件。现在apache正在展示源代码,但不是全部,只是其中的一部分。我补充说

AddType text/html .php

但是运气不好。

请查看您的addtype指令

在我看来,Apache正在告诉浏览器,它正在发送一个文档类型的application/php,用于扩展名为.php5的脚本。事实上,Apache应该告诉浏览器脚本正在输出text/html

请试试这个:

AddType text/html .php
关于上面的建议,您应该告诉浏览器您正在输出一个PHP脚本:这对我来说似乎是一个不寻常的想法。我在谷歌上搜索了一下,发现网上有很多关于它的讨论。显然,在某些情况下,您可能想说您正在发送一个PHP脚本(即使Apache应该执行该脚本并发出text/html),并且在某些情况下,浏览器根本无法识别特定的Mime类型

清除浏览器缓存始终是一个好主意

如果有帮助,这里有一份运行CentOS 5.9的服务器上的/etc/httpd/conf.d/php.conf文件的副本:

#        
# PHP is an HTML-embedded scripting language which attempts to make it                                             
# easy for developers to write dynamically generated webpages.                                                  
#
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
#
#PHP是一种HTML嵌入式脚本语言,它试图使
#易于开发人员编写动态生成的网页。
#
LoadModule php5_module modules/libphp5.so
LoadModule php5_modules/libphp5-zts.so
#
#使PHP解释器处理扩展名为.PHP的文件。
#
AddHandler php5 script.php
AddType text/html.php
#
#将index.php添加到将用作目录的文件列表中
#索引。
#
DirectoryIndex.php
#
#取消对以下行的注释,以允许PHP漂亮地打印.phps
#文件作为PHP源代码:
#
#AddType应用程序/x-httpd-php-source.phps

请查看您的addtype指令

在我看来,Apache正在告诉浏览器,它正在发送一个文档类型的application/php,用于扩展名为.php5的脚本。事实上,Apache应该告诉浏览器脚本正在输出text/html

请试试这个:

AddType text/html .php
关于上面的建议,您应该告诉浏览器您正在输出一个PHP脚本:这对我来说似乎是一个不寻常的想法。我在谷歌上搜索了一下,发现网上有很多关于它的讨论。显然,在某些情况下,您可能想说您正在发送一个PHP脚本(即使Apache应该执行该脚本并发出text/html),并且在某些情况下,浏览器根本无法识别特定的Mime类型

清除浏览器缓存始终是一个好主意

如果有帮助,这里有一份运行CentOS 5.9的服务器上的/etc/httpd/conf.d/php.conf文件的副本:

#        
# PHP is an HTML-embedded scripting language which attempts to make it                                             
# easy for developers to write dynamically generated webpages.                                                  
#
<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>

#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php

#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php

#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
#
#PHP是一种HTML嵌入式脚本语言,它试图使
#易于开发人员编写动态生成的网页。
#
LoadModule php5_module modules/libphp5.so
LoadModule php5_modules/libphp5-zts.so
#
#使PHP解释器处理扩展名为.PHP的文件。
#
AddHandler php5 script.php
AddType text/html.php
#
#将index.php添加到将用作目录的文件列表中
#索引。
#
DirectoryIndex.php
#
#取消对以下行的注释,以允许PHP漂亮地打印.phps
#文件作为PHP源代码:
#
#AddType应用程序/x-httpd-php-source.phps

正确的php添加类型是application/x-httpd-php

AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps
还要确保您的php模块已加载

LoadModule php5_module        modules/mod_php55.so
$ a2query -m php7.0

在配置apache时,请尝试从另一个浏览器查看页面-我曾经有过几天chrome顽固地缓存结果,并且它一直在下载源代码,而在另一个浏览器中,这一切都很好。

php的正确添加类型是application/x-httpd-php

AddType  application/x-httpd-php         .php
AddType  application/x-httpd-php-source  .phps
还要确保您的php模块已加载

LoadModule php5_module        modules/mod_php55.so
$ a2query -m php7.0

在配置apache时,请尝试从另一个浏览器查看页面-我曾经有过几天chrome顽固地缓存结果,并且它一直在下载源代码,而在另一个浏览器中,一切正常。

在从5.3升级到5.4之后,我以前也遇到过类似的问题。但是我的设置看起来有点不同,因为我正在运行Debian并使用fcgid来服务PHP页面,而不是PHP5 apache/cgi模块。 因此,在我升级之后,它还安装了php5_cgi,这与我的fcgid设置冲突,不再执行PHP文件

我必须禁用Apache模块并重新启动Apache

a2dismod php5_cgi
/etc/init.d/apache2 restart

一旦php5_cgi模块停止使用,fcgid就能够再次为PHP页面提供服务

在从5.3升级到5.4之后,我以前也有类似的问题。但是我的设置看起来有点不同,因为我正在运行Debian并使用fcgid来服务PHP页面,而不是PHP5 apache/cgi模块。 因此,在我升级之后,它还安装了php5_cgi,这与我的fcgid设置冲突,不再执行PHP文件

我必须禁用Apache模块并重新启动Apache

a2dismod php5_cgi
/etc/init.d/apache2 restart

一旦php5_cgi模块停止使用,fcgid就能够再次为PHP页面提供服务

经过一番努力,我终于解决了这个问题

如果你有
AddHandler x-mapp-php5.5  .php
sudo apt-cache search php7-*
sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json
SetHandler ....
/etc/init.d/httpd restart
AddType application/x-httpd-ea-php56 .php .php5 .phtm .html .htm
LoadModule php5_module        libexec/apache/libphp5.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
sudo apt-get install php libapache2-mod-php
$ cd /etc/apache2
$ ls -l mods-*/*php*
$ dpkg -l | grep php| awk '{print $2}' |tr "\n" " "
sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json
sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql
$ a2query -m php7.0
$ sudo a2enmod php7.0
$ sudo systemctl restart apache2
sudo vim /var/www/html/info.php
<?php
  phpinfo();
?>
sudo a2enmod php7
sudo systemctl restart mysql
sudo systemctl restart apache2
php_admin_value engine Off
IPCComTimeout 31
  #RemoveHandler .php
  #RemoveHandler .php7.0
  #php_admin_value engine Off
sudo apt-get install php-fpm
sudo a2enmod proxy_fcgi setenvif
sudo service apache2 restart
sudo a2enconf php7.3-fpm
sudo service apache2 restart
<FilesMatch ".+\.ph(ar|p|tml)$">
#    SetHandler application/x-httpd-php
</FilesMatch>
Ubuntu          16.04.6 LTS
Webmin version      1.932
Usermin version     1.780
Virtualmin version  6.08
Apache version      2.4.41
PHP versions        7.3.12
PHP-FPM         7.3.12 Server
php_admin_value engine Off
AddType  application/x-httpd-php-source  .phps
AddType text/html .php
a2dismod php7.2
a2enmod php7.4
SetHandler application/x-httpd-php
php_admin_flag engine Off
a2enmod php7 && service apache2 restart