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模块已经加载

     Loadmodulee php5_module modules/mod_php55.so 

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

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

    如果提示您下载一个.php文件而不是执行它,那么这里是完美的解决方案:我假设您已经安装了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中创建一个符号链接,指向保存在mods-available中的文件。

    首先删除原件:

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

    然后创建符号链接:

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

    我希望你的问题解决了。

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

    如果你有类似的东西

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

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

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

    请看看你的addtype指令。

    它在我看来像Apache告诉浏览器,它正在发送文件类型的应用程序/ 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. # <Ifmodulee prefork.c> Loadmodulee php5_module modules/libphp5.so </Ifmodulee> <Ifmodulee worker.c> Loadmodulee php5_module modules/libphp5-zts.so </Ifmodulee> # # 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,使用搜索可用的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然后评论它,并再次尝试刷新这为我工作…

    我有类似的症状,但又一个解决方案:在/etc/apache2/mods-enabled/php5.conf中有一个有用的建议,在评论中,我遵循:

     # To re-enable php in user directories comment the following lines # (from <Ifmodulee ...> to </Ifmodulee>.) Do NOT set it to On as it # prevents .htaccess files from disabling it. 

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

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

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

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

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

    sudo服务apache2重启

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

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

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

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

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

    <?php phpinfo(); ?>

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

    如果以上都不行,

    尝试发表评论

     SetHandler .... 

    并重新启动Apache使用

     /etc/init.d/httpd restart 

    它应该工作!

    PHP56

    vim /etc/httpd/conf/httpd.conf

     Loadmodulee 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" " " 

    安装到我的电脑的不同类型的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 

    验证PHP模块是否已加载

     $ a2query -m php7.0 

    如果未启用:

     $ sudo a2enmod php7.0 

    重新启动Apache服务器

     $ sudo systemctl restart apache2 

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

    创建一个空文件

     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