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

OS和服务器信息:

  • CentOS 6.4(最终)
  • Apache 2.2.15
  • PHP 5.5.1

我以前有安装PHP 5.3.x,但决定升级。 我首先卸载了PHP 5.3.x,然后安装了PHP 5.5.1,但安装完成后,Apache没有parsingPHP文件,只是下载了它们。 我在这里检查了类似的问题在stackoverflow,但他们都没有帮助我到目前为止。

为了logging,我在我的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> 

编辑:

通过删除

 AddType application/x-httpd-php .php5 .php4 .php .php3 .php2 .phtml 

Apache不再下载文件。 现在apache显示的是源代码,但不是全部。 我补充说

 AddType text/html .php 

但没有运气。

正确的AddType for 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 

当你configurationapache的时候,试着从另一个浏览器中查看页面 – 我已经有一段时间了,chrome顽固地caching了结果,并且在另一个浏览器中继续下载源代码,这很好。

经过艰苦的努力,我终于解决了这个问题。

如果提示您下载一个.php文件而不是执行它,那么这里是完美的解决scheme:我假设您已经安装了PHP5,但仍然出现这个错误。

 $ sudo su $ a2enmod php5 

就是这个。

但是,如果您仍然收到错误:

 Config file php5.conf not properly enabled: /etc/apache2/mods-enabled/php5.conf is a real file, not touching it 

然后执行以下操作:

发现文件不应该存储在mods-enabled ,而应该存储在mods-available 。 然后应该在mods-enabled中创build一个符号链接,指向保存在mods-available中的文件。

首先删除原件:

 $ mv /etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-available/ 

然后创build符号链接:

 $ ln -s /etc/apache2/mods-available/php5.conf /etc/apache2/mods-enabled/php5.conf 

我希望你的问题解决了。

我今天遇到这个问题,没有一个解决scheme为我工作。 所以这是另一个可能的原因:

如果你有类似的东西

 AddHandler x-mapp-php6 .php3 .php4 .php .phtml 

在您的web内容文件夹的.htaccess文件中,它可能导致您的PHP脚本停止工作。 在我的情况下,服务器不知道x-mapp-php6types,因为.htaccess文件是我从一个不同的web主机,当我转移的网站内容导入的东西。

只是从.htaccess文件中删除AddHandler行解决了我。

请看看你的addtype指令。

它在我看来像Apache告诉浏览器,它正在发送文件types的应用程序/ PHP的脚本与扩展名如.php5。 事实上,Apache应该告诉浏览器脚本输出的是text / html。

请试试这个:

 AddType text/html .php 

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

清理浏览器caching总是一个好主意。

如果有帮助的话,可以从运行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所需的模块丢失。 假设你已经安装了php7,使用search可用的php7模块

 sudo apt-cache search php7-* 

上面的命令将列出所有可用的PHP7模块进行安装。 你可以开始安装模块,

 sudo apt-get install libapache2-mod-php7.0 php7.0-mysql php7.0-curl php7.0-json 

我有同样的问题。 Apache不从一个特定的网站加载PHP文件,只是下载它。 我阅读这篇文章和答案,我已经看到我已经把这一行到.htaccess文件的最后一个地方:

 AddHandler x-mapp-php5.5 .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页面。

如果你的.htaccess有这样的东西… AddHandler应用程序/ x-httpd-php53 .php .php5 .php4 .php3然后评论它,并再次尝试刷新这为我工作…

我有类似的症状,但另一种解决scheme:在/etc/apache2/mods-enabled/php5.conf有一个有用的build议,在我的评论,我遵循:

 # 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. 

我花了两天的时间跟踪这个,发现我把我的PHP脚本放在错误的目录中。

在我的标准Ubuntu安装,我把脚本放在/var/www 。 他们应该在/var/www/html

我刚刚开始PHP的工作,所以我不知道我的解决scheme是否涉及您所经历的版本更改。

这解决了我的问题(我已经安装了php7):

sudo apt-get install libapache2-mod-php7.0

sudo服务apache2重启

我有这个问题。 事实certificate,我已经安装了nginx和apache,并自动启动。 问题在于nginx绑定了http端口,阻止了apache的启动。

从旧版本升级php5时,我有一个类似的问题到5.5.9,这是与Mint 17安装的版本。

我正在本地networking上的一台机器上运行LAMP安装程序,在将这些更改上载到实际的实时服务器之前,我使用该程序预览对网站的更改。 所以我保持一个完美的本地镜像的实际网站。

升级之后,在实际站点上运行并完美显示的文件将不会显示,或只会在本地机器上显示html。 PHP没有被parsing。 phpinfo()命令工作,所以我知道PHP是否在其他方面工作。 日志生成没有错误。 查看页面源代码显示了我真正的php代码。

我已经构build了一个包含以下代码的test.php页面:

<?php phpinfo(); ?>

这工作。 然后我发现当我把<?php改成<? 该命令不再有效。 我所有的网站使用<? 而不是<?php这可能不是理想的,但这是现实。 我通过转到/ etc / php5 / apache2来解决这个问题,search“short_open_tag”并将值从Off更改为On。

如果以上都不行,

尝试发表评论

 SetHandler .... 

并重新启动Apache使用

 /etc/init.d/httpd restart 

它应该工作!

PHP56

vim /etc/httpd/conf/httpd.conf

 LoadModule php5_module libexec/apache/libphp5.so AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps 

我有这样的问题。 这是我如何解决它。 安装完Apache之后,我使用这个命令安装了PHP

 sudo apt-get install php libapache2-mod-php 

它正确执行,但我从Apache请求.php文件,它提供不执行PHP脚本。

然后我检查PHP是否启用。

 $ cd /etc/apache2 $ ls -l mods-*/*php* 

但没有显示任何结果。 我检查已安装的PHP软件包。

 $ dpkg -l | grep php| awk '{print $2}' |tr "\n" " " 

安装到我的电脑的不同types的PHP版本。 然后我使用apt-get purge从我之前的列表中删除一些PHP包。

 sudo apt-get purge libapache2-mod-php7.0 php7.0 php7.0-cli php7.0-common php7.0-json 

我重新安装PHP

 sudo apt-get install php libapache2-mod-php php-mcrypt php-mysql 

validationPHP模块是否已加载

 $ a2query -m php7.0 

如果未启用:

 $ sudo a2enmod php7.0 

重新启动Apache服务器

 $ sudo systemctl restart apache2 

最后,我在Apache上检查PHP进程

创build一个空文件

 sudo vim /var/www/html/info.php 

将此内容添加到info.php并保存。

 <?php phpinfo(); ?> 

检查浏览器:

HTTP://localhost/info.php

它显示正确。我认为这将有助于任何人。

如果你的.htaccess有这样的东西

 AddType application/x-httpd-ea-php56 .php .php5 .phtm .html .htm