我最近一直在尝试在计算机上安装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.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"


评论

在phpinfo.php中,您是否添加了一些使.php文件可读的标头?

@Peteris我的整个脚本都没问题

尝试简单的脚本:<?php echo“ Hello world”; ?>是否显示Hello world?如果显示代码,则@RabNawaz表示您的服务器配置不正确!

只需再次显示代码即可:(

您从哪里访问您的php文件?请注意,为了由您的服务器执行php文件,您需要将文件放在正确的Web根目录中。并在您的Web浏览器中以http:// localhost /或http://127.0.0.1/
进行访问

#1 楼

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

还请检查/var/log/apache2/error.log,看看是否还有其他错误。

评论


您是否运行过:a2enmod php5

–丹尼尔·菲格罗亚(Daniel Figueroa)
2012年8月27日12:50

我的apache目录中没有mods_enabled文件夹

–冲动
2012年8月27日12:53

在我的情况下,@ imulsion已在/ etc / apache2 /下启用了mods

– Silveri
13-10-25在9:06

就我的php7而言,我不得不做一个a2enmod php7.0,它解决了我的问题。花了整整一天以某种方式到达此职位!

– Sejwal
16-09-17在15:42

在启用了mods的情况下,没有名为php的文件,怎么办?这个答案不解释东西

–黑色
17年7月7日在11:00

#2 楼

哇,这里有很多解决方案!这是我在Ubuntu 16.04上执行的操作:

sudo apt-get install php libapache2-mod-php
sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo service apache2 restart


评论


通过在apt-get中添加--reinstall为我工作。可能php模块/ apache安装很脏。

–Glastis
17-6-28在13:48



这在Digital Ocean的Ubuntu 16.04服务器上为我工作

– Sushant Bhargav
17年11月15日在9:49



这给了我以下错误:为php7.0考虑冲突php5,为mpm_prefork考虑冲突mpm_worker,等等...并且apache2重新启动失败

– rid
18 Jun 14'在4:59



如果您考虑到php7.2的冲突php5,请转到/ etc / apache2 / mods-available并删除php5。*

–西蒙·埃斯普坎普(Simon Epskamp)
19年5月24日在11:51

#3 楼

对于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/

评论


我必须在OSX El Capitan上针对PHP 5.6进行此操作。 (使用股票apache,但自制php56)

–rfay
16年8月11日在23:04



也可以在Windows上运行(这意味着您不必在Windows上运行终端命令)感谢您为我节省了无尽的搜索。

–Cedric Ipkiss
17-4-5在0:18



从源安装时,此文件匹配是必需的。 (config和make等为我启用了httpd.conf中的模块,但未添加此模块。)

–user7296055
17年11月29日在11:06

样本httpd.conf文件中有十亿条注释。谁能解释为什么没有一个适合PHP?这不是很少使用的东西。

–丹尼尔
18年6月12日在0:31

@Danial httpd.apache.org/support.html有很多方法,您可以在其中找到文档,报告错误并提出问题(例如,为什么在httpd.conf中没有使用PHP的明智示例?)

– RyanNerd
18年6月12日在19:27

#4 楼

打开文件

/etc/apache2/httpd.conf

并更改

#LoadModule php5_module libexec/apache2/libphp5.so


进入

LoadModule php5_module libexec/apache2/libphp5.so


所以httpd.conf中的PHP模块加载未完成

评论


就我而言,该行以php7_module开头-否则,这对我有用!

–b0rgBart3
19年2月23日在20:07

#5 楼

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

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


#6 楼

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

评论


我的也差不多。我做了“ sudo apt-cache搜索^ libapache2 | grep php”,它找到了相关的软件包,然后安装了“ sudo apt-get install libapache2-mod-php”。 libapache2-mod-php7.0已经安装。

– VectorVortec
18-09-16在8:05

#7 楼


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

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

#以下命令:

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

2.注释了以下几行



3.重新启动服务器

$ sudo service apache2 restart

4享受:)


#8 楼

好吧,如果您尝试了上面或更早之前提到的内容(可能是原因),并且它仍然显示代码而不是执行代码,那么您正在做的一件事是未解决的错误。
您用来访问php代码的网址;有些人通过将.php文件拖到网络浏览器中来尝试执行其php代码。这是错误的做法,可能会导致此类问题。 />localhost://test.php。
当您以这种方式访问​​它时,会发生这种错误:localhost://wamp/www/test.php

希望我帮助了某人在那里。 o /
〜丹尼尔

#9 楼

发布适用于我的服务器,以防万一,尽管这是一种不寻常的情况。

我设置了一个处理程序,以强制我的虚拟主机使用比其默认版本更高的php版本。当时有5.1,但我想5.6,所以我有这个:.htaccess文件中的

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




当试图运行我的网站时在本地,在那里有导致php代码输出到浏览器。删除它可以解决问题。

#10 楼

您可以删除.htaceess文件,然后让系统创建一个新文件(空白文件或基本文件)。您添加的某些行可能是不正确的语句,或者内部的其他原因导致了问题。然后,您可以从旧的.htaccess文件中逐行添加内容,以查看引起问题的原因。
对我来说这是有效的。在我的情况下,告诉机器不显示php扩展名的行是问题(RewriteCond和RewriteRule)。我的旧.htaccess文件在共享服务器上可以正常工作,但是当我切换到VPS时出现此问题。

评论


同样,如果您遇到了CORS愚蠢问题,请执行以下操作:运行sudo a2enmod标头和sudo a2enmod重写(不要忘记重启Apache)。

– RyanNerd
16年5月31日在19:56

#11 楼

感谢此线程上的其他人的建议。按照上述步骤操作,我发现apache服务器无法在load/etc/apache2/mods-enabled文件中开始报告语法错误。原来php7.0和php7.1都启用了。

#12 楼

对于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

#13 楼

如果启用了模块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>


#14 楼

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

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


对我而言,它可以正常工作。

#15 楼

适用于我的方法:

在活动的httpd.conf中,找到

<IfModule mime_module>
...
</IfModule>


它缺少以下内容

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


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

#16 楼

以上都不是对我适用的方法或对我有用的方法... PHP7,CentOS 6上的Apache Httpd 2.2

事实是,我在Apache之前安装了yum php(全部使用yum)...您必须做相反的事情:总是先安装Apache,然后再安装PHP,然后它才能工作...
确实,您可能在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

#17 楼

将以下配置添加到/etc/apache2/apache2.conf
<FilesMatch "\.php$">
    SetHandler application/x-httpd-php
</FilesMatch>

,然后通过apache重新启动sudo service apache2 restart

评论


谢谢!多亏了本指南,我对此进行了说明。我的第一行就是,包含它的文件是/etc/apache2/mods-enabled/php7.3.conf

– MaciekŁoziński
12月9日14:13



#18 楼

在MAMP中运行$ _POST时,这也发生在我身上。我的所有.ini和httpd文件均已正确设置。如果您正在执行表单处理,并且有一个html文档并将该信息发布到运行$ POST的php表单处理程序中,请确保您是通过本地服务器通过本地主机运行html文件的。

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

示例:

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

正确:http://localhost:your port number/form/form.html

现在单击提交按钮后应处理php

#19 楼

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

#20 楼

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

#21 楼

以管理员身份运行Xampp(Apache)。在Google Chrome浏览器中,输入:

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

即如果您创建的文件夹是“ LearnPhp”,文件是“ chapter1.php”,请键入

localhost/LearnPhp/chapter1.php

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

#22 楼

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


评论


这对我有用,但最初没有。我正在用户目录中运行Web内容,默认情况下该目录处于禁用状态。要启用它,请参阅/etc/apache2/mods-available/php7.2.conf中的最后一部分

–托尼·亚当斯(Tony Adams)
19-2-10在1:36



#23 楼

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

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


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


步骤2:yum remove **您的PHP版本**

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

#24 楼

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

#25 楼

我尝试了多种解决方案,但是解决方案是安装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 restart

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

#26 楼

就PHP7.3 Apache2.4 Ubuntu 18.04而言,我必须执行:
$ a2enmod actions fastcgi alias proxy_fcgi