为啥我的 PHP 文件显示为纯文本? [复制]

Posted

技术标签:

【中文标题】为啥我的 PHP 文件显示为纯文本? [复制]【英文标题】:Why are my PHP files showing as plain text? [duplicate]为什么我的 PHP 文件显示为纯文本? [复制] 【发布时间】:2011-04-03 02:39:41 【问题描述】:

我在 WAMP 中使用 php 编写 PHP 应用程序已有一段时间了。现在我在我的工作 PC 上分别安装 PHP 和 Apache HTTP Server。我已经安装了 PHP 5 和最新的 Apache。我去 localhost 看看它的工作原理!

现在我添加一个名为 test.php 的文件,它显示:

<?php
    phpinfo();
?>

但在浏览器中它只显示纯文本。有没有我明确告诉它使用 PHP 5 的地方?

【问题讨论】:

【参考方案1】:

还有一个原因(不是针对这种情况,但也许它会为某些人节省一些神经)是在 PHP 5.5 中,短开放标签 &lt;? phpinfo(); ?&gt; 默认被禁用。

因此 PHP 解释器会将短标签内的代码作为纯文本处理。在以前的 PHP 版本中,此功能默认启用。所以新的行为可能有点神秘。

【讨论】:

澄清一下,“短开标签”是&lt;?。相反,如果您不想更改默认配置,可以将其替换为 &lt;?php。那时显然不再需要结束标签。来源:php.net/manual/en/language.basic-syntax.phptags.php 这解决了我在将 PHP 从 7.1 升级到 7.4 后的问题。我在脚本中有短标签,更改为完整的 php 标签,它就解决了!谢谢!【参考方案2】:

您需要配置 Apache(网络服务器)以将 PHP 脚本作为 PHP 处理。检查 Apache 的配置。您需要加载模块(路径可能在您的系统上有所不同):

LoadModule php5_module "c:/php/php5apache.dll"

你还需要告诉 Apache 用 PHP 处理什么:

AddType application/x-httpd-php .php

See the documentation for more details.

【讨论】:

感谢您的回复。我的 PHP 目录中不存在 php5apache.dll 文件。是不是一直叫php5apache? .dll 文件在 Apache 2.2 中称为 php5apache2_2.dll,在 Apache 2.4 中称为 php5apache2_4.dll【参考方案3】:

您应该为 Apache 安装 PHP 5 库。

对于 Debian 和 Ubuntu:

apt-get install libapache2-mod-php5

然后重启 Apache:

service apache2 restart

【讨论】:

for php7 apt-get install libapache2-mod-php7.0 libapache2-mod-php 将安装 libapache2-mod-php7.0。我们不需要为 php7 明确指定版本 现在还有 apt-get install libapache2-mod-php7.2 供 7.2.3 的用户使用 sudo apt-get install libapache2-mod-php* for php7 kinda version to auto install without the 5 特别 对于 php 7.4:apt-get install libapache2-mod-php7.4【参考方案4】:

您需要将此添加到您的服务器配置中:

AddType application/x-httpd-php .php

这是假设您已正确安装 PHP,但可能并非如此,因为它在安装后立即无法正常工作。

您完全有可能还必须使用LoadModule 指令(通常在httpd.conf 中)将php .so/.dll 文件添加到您的Apache 配置中。

【讨论】:

iamjonesy 可能还需要为 php5_module 添加 LoadModule 命令。 这正是我最终在 mac osx 10.10 yosemite 上运行 php 所需要的。谢谢很多:-) 在我们下载客户端的 .htaccess 文件的特殊情况下,有一个额外的(并且不正确的)实例化指令“AddHandler application/x-httpd-php5 .php”,它适用于他们的旧服务器配置,但不是我们的。一旦我们在该站点的 .htaccess 文件中注释掉了这一行,PHP 就又可以正常工作了。 :-) 这篇帖子说 AddType 应该是 text/html 而 addHandler 应该是 application/x-httpd-php,这听起来很合理。 (serverfault.com/questions/394250/…) 什么是正确的? @user2345998:现在在我看来,AddHandler 在语义上会更“正确”。早在 2010 年,无论我们都在运行什么 apache 版本,这对我和其他许多人都有效。显然,您链接的答案引用了无限多的文档,但我认为它比我的更好。【参考方案5】:

您需要在 Apache 中添加处理程序来处理 php 代码。

通过命令 sudo vi /etc/httpd/conf/httpd.conf 编辑

添加这两个处理程序

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

在下面指定的位置

<IfModule mime_module>

 AddType application/x-compress .Z
 AddType application/x-gzip .gz .tgz

--Add Here--


</IfModule>

有关 AddType 处理程序的更多详细信息

http://httpd.apache.org/docs/2.2/mod/mod_mime.html

【讨论】:

【参考方案6】:

你在使用 userdir 模组吗?

在这种情况下,PHP5 似乎默认禁用从该位置运行的脚本,您必须注释掉以下行:

<IfModule mod_userdir.c>
    <Directory /home/*/public_html>
        php_admin_flag engine Off
    </Directory>
</IfModule>

/etc/apache2/mods-enabled/php5.conf 中(在 ubuntu 系统上)

【讨论】:

全新的 Ubuntu 18 安装 w apache2,我在其他任何地方都没有看到提到过这个!我可以给你送披萨吗? croth you-know-what-goes-after-a-name the dance dot net(无空格)。【参考方案7】:

您可能也像我一样,在安装 Apache 之前安装了 php-cgi,但这样做时它没有正确设置 Apache 来运行 PHP,完全删除 PHP 并重新安装似乎可以解决我的问题。

【讨论】:

我也不同意@JaroslavKadlec,我安装时出现故障,删​​除并重新安装对我有用

以上是关于为啥我的 PHP 文件显示为纯文本? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 laravel 项目将@extends、@yield 和@section 显示为纯文本?

PHP 文件在 Apache2 LAMP 机器中显示为纯文本

PHP在Web服务器上显示为纯文本?

为啥资源包中的瑞典语文本显示为乱码? [复制]

HTML 在 dojo 小部件中显示为纯文本

HTML 内容显示为纯文本