125

我最近一直在尝试在我的计算机上安装 PHP 和 Apache。几个小时后,它们就安装好了。正如大家所说,我已经修改了 httpd.conf 和 php.ini 文件。然后我创建了一个简单的 PHP 脚本:

<?php phpinfo(); ?>

但是当我尝试用它运行它时,http://127.0.0.1/phpinfo.php它只显示源代码而不是执行它。我正在使用 Apache 2、PHP 5 和 Windows Vista。

编辑线:

PHP.INI:

short_open_tag = On

HTTPD配置文件

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

27 回答 27

99

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

还要检查/var/log/apache2/error.log您是否有任何其他错误。

于 2012-08-27T12:49:14.093 回答
85

哇,这里有很多解决方案!这是我在Ubuntu 16.04上所做的:

sudo apt-get install php libapache2-mod-php
sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo service apache2 restart
于 2017-04-28T18:32:08.580 回答
46

对于 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/的摘要

于 2016-05-31T16:39:00.637 回答
25

打开文件

/etc/apache2/httpd.conf

和改变

#LoadModule php5_module libexec/apache2/libphp5.so

进入

LoadModule php5_module libexec/apache2/libphp5.so

所以只需取消注释 PHP 模块加载httpd.conf

于 2013-05-29T05:03:45.407 回答
8

我发现这可以解决我的相关问题。我将其添加到相关<Directory>部分:

<IfModule mod_php5.c>
    php_admin_flag engine on
</IfModule>
于 2014-12-01T14:16:41.410 回答
6

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

于 2016-05-12T09:43:26.390 回答
4

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

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

# 以下命令:

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

2. 评论以下几行

在此处输入图像描述

3.重启服务器

$ sudo 服务 apache2 重启

4享受:)

于 2019-06-27T16:09:17.703 回答
3

好吧,如果您已经尝试了上面或更早告诉您的内容(这可能是原因),并且它仍然显示代码而不是执行它,那么您做错了一件事尚未解决。您用于访问 php 代码的 url;有些人试图通过将 .php 文件拖入 Web 浏览器来执行他们的 php 代码。这是错误的做法,可能会导致此类问题。如果您在 C://wamp/www 文件夹中将文件保存为“test.php”,那么您必须通过以下方式访问该文件:localhost://test.php。这样访问就会出现这种错误:localhost://wamp/www/test.php

希望我帮助了那里的人。o/ ~丹尼尔

于 2014-07-23T09:32:48.343 回答
3

发布对我有用的东西以防万一帮助别人,尽管这是一个不寻常的案例。

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

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

在我的 .htaccess 文件中。

当尝试在本地运行我的网站时,将其放置在其中会导致 php 代码输出到浏览器。删除它解决了这个问题。

于 2016-12-22T04:31:38.233 回答
3

感谢此线程上的其他人的建议。按照上面提到的步骤,我发现 apache 服务器无法开始报告load. /etc/apache2/mods-enabled原来 php7.0 和 php7.1 都被启用了。

a2dismod php7.0
systemctl restart apache2

并且 php 再次正确呈现。

于 2018-02-22T10:17:45.717 回答
3

将以下配置添加到/etc/apache2/apache2.conf

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

并重新启动apache通过sudo service apache2 restart

于 2020-08-16T15:39:12.470 回答
2

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

这对我有用。在我的情况下,告诉机器不要显示 php 扩展的行是问题(RewriteCondRewriteRule)。我的旧.htaccess文件在共享服务器上运行良好,但是当我切换到 VPS 时出现了这个问题。

于 2015-09-16T01:37:28.313 回答
2

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

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

例子:

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

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

现在,一旦您单击提交按钮,就应该处理 php

于 2015-09-19T17:28:12.040 回答
2

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

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

在我的情况下工作正常。

于 2016-12-06T13:03:05.010 回答
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

于 2020-01-22T21:24:46.800 回答
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>
于 2015-03-07T20:11:47.190 回答
1

什么对我有用:

在活动的 httpd.conf 中,找到

<IfModule mime_module>
...
</IfModule>

它缺少以下内容

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

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

于 2017-04-08T15:39:46.413 回答
1

以上都不适用于我... PHP7,Apache Httpd 2.2 on CentOS 6

事实上,我在 Apache 之前安装了(全部使用 yum)php ......你必须做相反的事情:总是先安装 Apache,然后是 PHP,然后它就可以工作了......事实上,你很可能错过libphp7.solibphp7-zts.so/etc/httpd/modules/

我无论如何都能够在不卸载 PHP 的情况下恢复。我确实在/etc/httpd/conf/httpd.conf:中添加了魔法线,AddType application/x-httpd-php .php 然后运行:yum install php php-mysql

于 2018-07-30T18:46:18.133 回答
1

我尝试了上面的一些解决方案,但是我们场景中的修复是安装 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 重启

然后一切正常。

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

于 2020-03-10T13:16:52.970 回答
0

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

于 2016-07-10T11:20:37.270 回答
0

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

于 2016-10-26T20:00:05.197 回答
0

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

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

即如果您创建的文件夹是“LearnPhp”,文件是“chapter1.php”然后输入

localhost/LearnPhp/chapter1.php

我在下载 xampp 时创建的 htdocs 文件夹中的 xampp 文件夹中创建了此文件夹。

于 2017-03-15T20:30:34.390 回答
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
于 2018-01-17T15:09:00.787 回答
0

有时如果你有 php 版本冲突,它会发生要克服这个问题,请按照以下步骤操作

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

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

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

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

于 2018-08-28T06:05:16.770 回答
0

这个解决方案对我有用。我清除了 apache2 并重新安装。它发生在清除和安装之后。如果是第一次安装,就不会遇到这个问题。

于 2019-12-08T19:04:13.597 回答
0

在我使用 PHP7.3 Apache2.4 Ubuntu 18.04 的情况下,我必须执行:

$ a2enmod actions fastcgi alias proxy_fcgi
于 2020-08-24T10:43:39.477 回答
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变体的检查,但这个肯定为我修复了它。

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

于 2021-05-14T08:50:47.683 回答