Apache显示PHP代码而不是执行

时间:2012-08-27 12:40:56

标签: php apache

我最近一直试图在我的电脑上安装php和apache。几个小时后,他们已经安装好了。我修改了httpd.conf和php.ini文件就像每个人都说的那样。然后我创建了一个简单的PHP脚本:

<?php phpinfo(); ?>

但是当我尝试使用http://127.0.0.1/phpinfo.php运行它时,它只显示源代码而不是执行。我正在使用apache2,php5和windows vista。我一直在互联网上搜索没有成功,我差点撞到墙上。任何人都能救我脑震荡吗?

编辑线:

PHP.INI:

short_open_tag = On

HTTPD.CONF

LoadModule php5_module "C:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "C:/php"

27 个答案:

答案 0 :(得分:79)

你必须启用php!检查Apache目录中的文件夹mods-enabled(默认值:/ etc / apache2 /),看看是否找到名为php的文件。我不记得扩展名,但我认为它是.so

同时检查var/log/apache2/error.log以查看是否有任何错误。

答案 1 :(得分:40)

哇,这里有很多解决方案!这是我在 Ubuntu 16.04

上所做的
"myMethod() has already been overridden here"

答案 2 :(得分:28)

对于PHP 7(也可能适用于以前的版本),但我必须这样做:

将其添加到/etc/apache2/apache2.conf

的底部
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>

从终端运行:

sudo a2dismod mpm_event && sudo a2enmod mpm_prefork && sudo a2enmod php7

然后不要忘记重启Apache,因为它知道你改变了东西:

sudo service apache2 restart

摘要来自:https://www.atlantic.net/community/howto/try-php7-lamp-ubuntu-14-04/

答案 3 :(得分:24)

打开文件

/etc/apache2/httpd.conf

并更改

#LoadModule php5_module libexec/apache2/libphp5.so

LoadModule php5_module libexec/apache2/libphp5.so

所以只需解开httpd.conf

中的PHP模块加载

答案 4 :(得分:5)

I found this to solve my related problem.我已将其添加到相关的<Directory>部分:

<IfModule mod_php5.c>
    php_admin_flag engine on
</IfModule>

答案 5 :(得分:5)

一个对我有用的不同答案。是的,要安装[sudo] apt-get install libapache2-mod-php5.X

答案 6 :(得分:3)

好吧,如果你已经尝试过上面或之前被告知过的事情(可能的原因)并且它仍然显示代码而不是执行它,那么有一件事你做错了没有&已经解决了。 您用来访问PHP代码的网址;有些人试图通过将.php文件拖到Web浏览器中来执行他们的PHP代码。这是错误的做法,可能导致这种问题。 如果您已将文件保存为&#34; test.php&#34;在C:// wamp / www文件夹中,您必须以这种方式访问​​此文件: 本地主机://test.php。 当你以这种方式访问​​它时会出现这种错误:localhost://wamp/www/test.php

希望我帮助那里的人。 O / 〜丹尼尔

答案 7 :(得分:3)

发布对我有用的内容可以帮助有人在路上,虽然这是一个不寻常的案例。

我设置了一个处理程序来强制我的web主机使用比默认版本更高版本的php。有5.1,但我想要5.6所以我有这个:

<FilesMatch \.php$>
    SetHandler php56-cgi
</FilesMatch>

在我的.htaccess文件中。

当尝试在本地运行我的网站时,在那里导致PHP代码输出到浏览器。删除它解决了这个问题。

答案 8 :(得分:2)

您可以删除 .htaceess 文件,让系统创建一个新的(空白或基本)文件。可能是您添加的某些行是不正确的语句,或者其他内容导致问题。然后,您可以从旧的 .htaccess 文件中逐行添加,以查看导致问题的原因。

这对我有用。告诉机器不显示php扩展的行是我的问题( RewriteCond RewriteRule )。我的旧 .htaccess 文件在共享服务器上工作得很好,但是当我切换到VPS时出现了这个问题。

答案 9 :(得分:2)

对于PHP7和Apache2.4,这就是您需要做的一切:

sudo vim /etc/httpd/conf/httpd.conf

移至最底端并插入以下内容(全部靠自己):

<FilesMatch "\.*">
SetHandler application/x-httpd-php
</FilesMatch>

然后,重新启动Apache以加载新配置:

sudo service httpd restart

Apache现在将使用PHP执行所有HTTP / S请求。如果您只有html,css和php文件,则此方法对您来说很好。如果您正在运行其他语言,则需要根据情况调整适合的文件。我已经使用phpMyAdmin测试了它,并且效果很好。

所有人都在这里谈论的其他东西对我来说都不是必需的。当我把“ AddType Application .....”放在正确的位置时,Apache告诉我该模块已经加载并跳过了它。

更多信息可以在这里找到:https://httpd.apache.org/docs/2.4/mod/core.html#filesmatch

我的安装如下:

sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd

如果您还没有阅读https://httpd.apache.org/docs/current/howto/htaccess.html#when

,则还应该阅读此书

答案 10 :(得分:1)

将以下配置添加到async def shielded(coro): ft = asyncio.ensure_future(coro) shielded_ft = asyncio.shield(ft) try: await shielded_ft except asyncio.CancelledError: await ft raise

/etc/apache2/apache2.conf

并通过<FilesMatch "\.php$"> SetHandler application/x-httpd-php </FilesMatch> 重新启动apache

答案 11 :(得分:1)

以上都不适用或对我没有帮助... PHP7,CentOS 6上的Apache Httpd 2.2

事实是,我在Apache之前安装了php(都是yum)。 确实,您可能在libphp7.so

中丢失了libphp7-zts.so/etc/httpd/modules/

即使不卸载PHP,我仍然能够恢复。我确实在/etc/httpd/conf/httpd.conf中添加了魔术线:AddType application/x-httpd-php .php 然后运行:yum install php php-mysql

答案 12 :(得分:1)

感谢网络上的其他人提出他们的建议。按照上述步骤,我发现apache服务器无法在load的{​​{1}}文件中开始报告语法错误。事实证明,php7.0和php7.1都已启用。

/etc/apache2/mods-enabled

再次正确呈现php。

答案 13 :(得分:1)

对我有用的是什么:

在活动的httpd.conf中,找到

<IfModule mime_module>
...
</IfModule>

缺少以下

AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php

重启apache后,正确解析.php文件。

答案 14 :(得分:1)

如果您是ubuntu用户,安装apache后必须在全新安装中运行以下命令

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

在我的情况下工作正常。

答案 15 :(得分:1)

如果模块userdir已启用且您的站点位于userdir(〜/ public_html),则必须检查/etc/apache2/mods-enabled/php5.conf。 以下部分使其工作(在Ubuntu 14.10 utopic上):

# Running PHP scripts in user directories is disabled by default
# 
# 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_flag engine Off
#    </Directory>
# </IfModule>

答案 16 :(得分:0)

我尝试了上面的许多解决方案,但是在我们的方案中,解决方法是安装fpm-module。

我们在php之前安装了httpd,这可能与该问题有关,但是要解决此问题,我们安装了以下内容:

yum模块安装php:7.2

这安装了php-fpm-7.2.11-4.module + el8.1.0 + 5443 + bc1aeb77.x86_64.rpm模块,然后通过以下方式启用该功能:

systemctl enable --now php-fpm

从那时起,我们将/etc/httpd/conf.d/php.conf保留为默认值,然后重新启动httpd

服务httpd重新启动

然后一切正常。

希望这会有所帮助,花费的时间比应该弄清楚的时间还要长。

答案 17 :(得分:0)

Centos 7、PHP 8、Apache 2

我最近升级了一个 centos 服务器以使用 php 8。

升级后 php 停止工作,apache 开始以文本形式为我提供 php 代码。

花了很长时间寻找没有更新的配置设置,我将其追踪到:

/etc/httpd/conf.d

<IfModule  mod_php7.c>

需要更改为:

<IfModule  mod_php.c>

您可能会在其他地方看到 mod_php7 检查,这些检查可能会更新为 mod_php 变体,但这个绝对为我修复了它。

之后不要忘记重启服务器。

答案 18 :(得分:0)

对于PHP7.3 Apache2.4 Ubuntu 18.04,我必须执行:

$ a2enmod actions fastcgi alias proxy_fcgi

答案 19 :(得分:0)

这个solution为我工作。我清除了apache2并重新安装。清除并安装后发生了。如果是第一次安装,则不会遇到此问题。

答案 20 :(得分:0)

  

Apache显示php代码而不是执行已修复的问题

     

1。打开php5.6 conf或php7.x conf

     

#以下命令:

     

$ sudo vi /etc/apache2/mods-enabled/php5.6.conf

     

2。评论以下行

     

enter image description here

     

3。重新启动服务器

     

$ sudo服务apache2重新启动

     

4享受:)

答案 21 :(得分:0)

有时候,如果您有php版本冲突,则会发生 要解决这个问题,请按照以下步骤

第1步:安装了Yum列表| grep'php'

  

如果您有多个php版本,例如php 5.6和php 7.0,则会发生这种冲突

第2步:请删除**您的php版本**

第3步:然后重新启动apapche /etc/init.d/httpd restartservice apache2 restart

答案 22 :(得分:0)

Debian 9解决方案:

touch /etc/apache2/conf-available/php.conf 

添加到文件下一行:

<IfModule mod_php5.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>
<IfModule mod_php.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

然后运行:

a2enconf php && service apache2 restart

答案 23 :(得分:0)

以管理员身份运行Xampp(apache)。在谷歌浏览器类型:

localhost/<insert folder name here>/<insert file name>

即。如果您创建的文件夹是&#34; LearnPhp&#34;,则文件是&#34; chapter1.php&#34;然后输入

localhost/LearnPhp/chapter1.php

我在htdocs文件夹的xampp文件夹中创建了这个文件夹,当你下载xampp时会创建该文件夹。

答案 24 :(得分:0)

我遇到了同样的问题。当我运行php文件时,Web浏览器向我展示了php代码而不是执行它。我曾尝试多次:卸载/重新安装wampserver64,解决PHP / Apache设置/模块等问题。等待2天后:我意识到当我尝试通过按下默认组合“ctrl +”在记事本++中运行php文件时用于镀铬的alt + shift + R“。它试图在我的chrome的地址栏中执行我的php文件,如:“file /// C:/ wamp64 / www / bla / bla ..”。那是我的问题。我根据页面Configuring Notepad++ to run php on localhost?进行了更改。我的问题解决了。但是2天后......

答案 25 :(得分:0)

我遇到了同样的问题,这是由模块suphp的Debian / Ubuntu默认配置引起的。它包含整个/ usr / share的suPHP_Engine off,这导致php源显示在浏览器中。使用a2dismod suphp停用是临时解决方案。

答案 26 :(得分:0)

在MAMP中运行$ _POST时也发生了这种情况。我的所有.ini和httpd文件都已正确设置。如果您正在进行表单处理并且您有一个html文档并将信息发布到运行$ POST的php formhandler,请确保您通过服务器从localhost运行html文件,而不仅仅是本地。

这是我运行html文档的一个快捷方式,只需单击我的目录中的html文件并在我的网络浏览器中启动,实际上检查你的表单中是否正在处理php,你必须运行你的html你的服务器。我忽略了一个非常简单的协议。

示例:

错误:file:///Applications/MAMP/htdocs/form/form.html

右:http://localhost:your port number/form/form.html

现在,点击提交按钮后,应该处理php