为啥我的 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 中,短开放标签 <? phpinfo(); ?>
默认被禁用。
因此 PHP 解释器会将短标签内的代码作为纯文本处理。在以前的 PHP 版本中,此功能默认启用。所以新的行为可能有点神秘。
【讨论】:
澄清一下,“短开标签”是<?
。相反,如果您不想更改默认配置,可以将其替换为 <?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 显示为纯文本?