提问人:imulsion 提问时间:8/27/2012 最后编辑:Communityimulsion 更新时间:11/15/2023 访问量:424770
Apache 显示 PHP 代码而不是执行它
Apache shows PHP code instead of executing it
问:
我最近一直在尝试在我的计算机上安装 PHP 和 Apache。几个小时后,它们就安装好了。我已经修改了httpd.conf和php.ini文件,就像大家说的那样。然后,我创建了一个简单的PHP脚本:
<?php phpinfo(); ?>
但是当我尝试使用它运行它时,它只显示源代码而不是执行它。我正在使用 Apache 2、PHP 5 和 Windows Vista。http://127.0.0.1/phpinfo.php
编辑行:
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"
答:
您必须启用 php!检查 Apache 目录中的文件夹(默认:),看看是否找到名为 .我不记得扩展名,但我认为是.mods-enabled
/etc/apache2/
php
.so
此外,请检查是否有任何其他错误。/var/log/apache2/error.log
评论
a2enmod php7.0
php
mods-enabled
.conf
.load
a2enmod php7.0
Considering conflict php5 for php7.0
Considering conflict mpm_worker for mpm_prefork
打开文件
/etc/apache2/httpd.conf
和改变
#LoadModule php5_module libexec/apache2/libphp5.so
到
LoadModule php5_module libexec/apache2/libphp5.so
因此,只需将 PHP 模块加载到httpd.conf
评论
好吧,如果您已经尝试了上面或之前被告知的内容(这可能是原因),并且它仍然显示代码而不是执行它,那么您做错了一件事,没有得到解决。 您用于访问 php 代码的 url;有些人试图通过将 .php 文件拖到 Web 浏览器中来执行他们的 PHP 代码。这是错误的做法,可能会导致此类问题。 如果您已将文件保存为“test.php”,则必须在 C://wamp/www 文件夹中访问此文件: localhost://test.php。 当您以这种方式访问它时,会出现这种错误: localhost://wamp/www/test.php
我发现这可以解决我的相关问题。我将其添加到相关部分:<Directory>
<IfModule mod_php5.c>
php_admin_flag engine on
</IfModule>
如果模块 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>
您可以删除 .htaccess 文件,让系统创建一个新的(空白或基本)文件。可能是您添加的某些行是不正确的陈述,或者里面的其他东西可能会导致问题。然后,您可以从旧的 .htaccess 文件中逐行添加,以查看导致问题的原因。
这对我有用。在我的情况下,告诉机器不要显示 php 扩展的行是有问题的(RewriteCond 和 RewriteRule)。我的旧 .htaccess 文件在共享服务器上运行良好,但当我切换到 VPS 时出现了这个问题。
评论
sudo a2enmod headers
sudo a2enmod rewrite
在 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
一个对我有用的不同答案。是不是,要安装[sudo] apt-get install libapache2-mod-php5.X
评论
对于 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/
评论
我遇到了同样的问题,由模块的 Debian/Ubuntu 默认配置引起。它包含整个 /usr/share,这导致 php 源代码显示在浏览器中。停用是临时解决方案。suphp
suPHP_Engine off
a2dismod suphp
我也有同样的问题。当我运行一个 php 文件时,Web 浏览器向我显示 php 代码而不是执行它。我已经尝试了很多次:卸载/重新安装 wampserver64,解决 PHP/Apache 设置/模块等。2 天后:当我尝试通过按 chrome 的默认组合“ctrl + alt + shift + R”在记事本 ++ 中运行 php 文件时,我意识到了这一点。它试图在我的 chrome 地址栏中执行我的 php 文件,例如:“file///C:/wamp64/www/bla/bla..”。那是我的问题。我根据页面进行了更改 配置 Notepad++ 以在 localhost 上运行 php?。我的问题解决了。但是2天后..
如果您是 ubuntu 用户,安装 apache 后必须在全新安装中运行以下命令
sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt
就我而言,工作正常。
评论
sudo apt-get install php7.0 libapache2-mod-php7.0 php7.0-mcrypt
发布对我有用的东西,以防万一帮助某人,尽管这是一个不寻常的情况。
我设置了一个处理程序来强制我的虚拟主机使用比默认版本更高的 php。有 5.1,但我想要 5.6,所以我有这个:
<FilesMatch \.php$>
SetHandler php56-cgi
</FilesMatch>
在我的.htaccess文件中。
当尝试在本地运行我的网站时,在那里进行会导致 php 代码输出到浏览器。删除它解决了问题。
以管理员身份运行 Xampp (apache)。在谷歌浏览器中输入:
localhost/<insert folder name here>/<insert file name>
即,如果您创建的文件夹是“LearnPhp”,文件是“chapter1.php”,则键入
localhost/LearnPhp/chapter1.php
我在htdocs文件夹的xampp文件夹中创建了这个文件夹,该文件夹是在下载xampp时创建的。
什么对我有用:
在活动的 httpd.conf 中,找到
<IfModule mime_module>
...
</IfModule>
它缺少以下内容
AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php
重新启动 apache 后,.php 文件将被正确解析。
哇,这里有很多解决方案!这是我在 Ubuntu 16.04 上所做的:
sudo apt-get install php libapache2-mod-php
sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo service apache2 restart
评论
--reinstall
Considering conflict php5 for php7.0
Considering conflict mpm_worker for mpm_prefork
Considering conflict php5 for php7.2
/etc/apache2/mods-available
php5.*
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
评论
/etc/apache2/mods-available/php7.2.conf
感谢此线程上的其他人的建议。按照上述步骤,我发现 apache 服务器无法开始报告 中的文件中的语法错误。事实证明,php7.0 和 php7.1 都启用了。load
/etc/apache2/mods-enabled
a2dismod php7.0
systemctl restart apache2
PHP 再次正确呈现。
以上均不适用于我或对我有用......CentOS 6 上的 PHP7、Apache Httpd 2.2
事实是,我在 Apache 之前安装了(全部带有 yum)php ...你必须做相反的事情:总是先安装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
有时,如果您遇到 php 版本冲突,就会发生这种情况 要克服这个问题,请按照以下步骤操作
第 1 步:已安装 Yum 列表 |grep 'php'
如果您有多个版本的 PHP,例如 PHP 5.6 和 PHP 7.0,则会发生这种混淆
第 2 步:百胜取用 **你的 php 版本 **
第 3 步:然后重新启动 apapche 或/etc/init.d/httpd restart
service apache2 restart
Apache 显示 php 代码而不是执行 问题已修复
1. 打开php5.6 conf或php7.x conf
# 以下命令:
$ sudo vi /etc/apache2/mods-enabled/php5.6.conf
2. 评论以下几行
3. 重新启动服务器
$ sudo 服务 apache2 重启
4 享受:)
这个解决方案对我有用。我清除了 apache2 并重新安装。它发生在清除和安装之后。如果是第一次安装,则不会遇到此问题。
对于 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
评论
/etc/httpd
我尝试了上面的许多解决方案,但是我们场景中的修复方法是安装 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 重新启动
然后一切都奏效了。
希望这会有所帮助,花了比它应该弄清楚的时间更长的时间。
将以下配置添加到/etc/apache2/apache2.conf
<FilesMatch "\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
并重新启动过孔apache
sudo service apache2 restart
评论
<FilesMatch ".+\.ph(ar|p|tml)$">
就我而言,使用 PHP7.3 Apache2.4 Ubuntu 18.04,我必须执行:
$ a2enmod actions fastcgi alias proxy_fcgi
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
之后不要忘记重新启动服务器。
您的其他站点/子目录是否有效?是否只是一个显示此行为的目录?
然后检查索引 .php 中的语法错误。如果您错过了 PHP 文件中的第一个字符:“<?php”中的“<”,那么浏览器会显示文件的其余部分,因为它是文本文件。
例:
?php
phpinfo();
?>
然后浏览器只显示 “?php phpinfo(); ?>” 而不是 phpinfo() 的输出。
如果您使用的是 termux 和 apachectl 命令,抱怨找不到 libphp.so 或其他共享对象文件,答案可能是 rf 注释删除 usr ($HOME) 目录,当您重新打开 termux 时,它将重新安装该目录,或者您可以执行 apt-file 搜索 shared_object_filename.so 以找到丢失的 libphp.so 文件,并将 ln -s 添加到 Apache 正在寻找它的位置。另外,当您编辑 httpd.conf 以包含 mod PHP 时,该模块的名称和路径很重要。注意:只需根据 .so-named 模块版本将模块名称从 PHP 7 模块更改为 PHP 模块即可解决问题
评论
<?php echo "Hello world"; ?>
http://localhost/
http://127.0.0.1/