19

我在我的 CentOS 服务器上安装了 PHP。但是,当在我的脚本中运行 phpinfo() 来测试它时,我收到的是 HTML,而不是解释的信息。

我可以看到 PHP 的文件夹。我什至可以在etc文件夹中看到 php.ini。但是 PHP 本身似乎不起作用。

我的意思是我的 test.php 文件如下所示:

<?php
    phpinfo();
?>

响应如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html><head>
<style type="text/css">
body {background-color: #ffffff; color: #000000;}
body, td, th, h1, h2 {font-family: sans-serif;}
pre {margin: 0px; font-family: monospace;}
a:link {color: #000099; text-decoration: none; background-color: #ffffff;}
...

等等。

似乎是什么问题,我该如何解决?

如果我复制返回的 HTML,将其粘贴到 HTML 文件中,然后从那里运行,我可以看到格式化的结果,但不能通过运行 test.php。我假设 PHP 没有以某种方式加载......即使在解释的 HTML 中我可以看到:

**Server API    Apache 2.0 Handler
Virtual Directory Support    disabled
Configuration File (php.ini) Path    /etc/php.ini
Scan this dir for additional .ini files    /etc/php.d
additional .ini files parsed    /etc/php.d/dbase.ini, /etc/php.d/json.ini, /etc/php.d/mysql.ini, /etc/php.d/mysqli.ini, /etc/php.d/pdo.ini, /etc/php.d/pdo_mysql.ini, /etc/php.d/pdo_sqlite.ini
PHP API    20041225
PHP Extension    20050922
Zend Extension    220051025
Debug Build    no
Thread Safety    disabled
Zend Memory Manager    enabled
IPv6 Support    enabled
Registered PHP Streams    php, file, http, ftp, compress.bzip2, compress.zlib, https, ftps**

等等...

在这个系统上,托管了三个网站。这和这个问题有关系吗?

4

14 回答 14

24

这也发生在我身上。修复将其包装在 HTML 标记中。然后我将文件保存为/var/www/html/info.php并在浏览器中运行http://localhost/info.php 。而已。

<html>
    <body>
        <?php
            phpinfo();
        ?>
    </body>
</html>
于 2016-04-14T13:42:39.887 回答
13

保存包含的页面

<?php
    phpinfo();
?>

带有 .php 扩展名。之类info.php的,不是info.html...

于 2013-07-22T01:00:17.387 回答
10

您需要更新 Apache 配置以确保它php以文本/HTML 类型输出。

下面的代码应该可以工作,但有些配置不同。

AddHandler php5-script .php
AddType text/html .php
于 2013-07-22T01:06:58.307 回答
8

这为我做了(第二个答案):为什么我的 PHP 文件显示为纯文本?

简单地添加这个,没有其他工作。

apt-get install libapache2-mod-php5
于 2016-04-20T17:43:03.670 回答
4

我刚刚遇到了同样的问题,发现客户从他们的php.ini文件中禁用了这个功能:

; This directive allows you to disable certain functions for security reasons.
; It receives a comma-delimited list of function names. This directive is
; *NOT* affected by whether Safe Mode is turned On or Off.
disable_functions = phpinfo;

更多信息:出于安全原因启用和禁用 phpinfo()

于 2014-09-04T05:58:49.013 回答
3

尝试php.ini在root中创建一个文件并写入以下命令并保存。

disable_functions =

如果全局 PHP 配置禁用了 phpinfo() 函数,则使用此代码将为您启用该函数。

于 2016-04-01T11:48:39.643 回答
3

确保标签“php”粘贴在这样的代码中:

?php phpinfo(); ?>

不像这样:

? php phpinfo(); ?>

或者服务器会将其视为(普通单词),因此服务器将无法理解您正在编写的语言来处理它,因此它将是空白的。

我知道这是一个愚蠢的错误......但它发生了^_^

于 2017-03-08T03:51:54.233 回答
2

它也发生在我身上。在新配置的 Red Hat Linux 7 服务器上。

当我运行 PHP 页面时,即 info.php,我可以看到纯文本 PHP 脚本而不是执行它们。

我刚刚安装了 PHP:

[root@localhost ~]# yum install php

然后重新启动 Apache HTTP Server:

[root@localhost ~]# systemctl restart httpd
于 2017-11-17T12:05:52.287 回答
2

对于没有建站经验的人(比如我)我试了很多,结果发现我用的不是.php扩展,而是.html扩展。

于 2018-10-24T20:32:26.273 回答
1

我的解决方案是再次卸载并安装 PHP 实例(在我的情况下为 7.0):

sudo apt-get purge php7.0
sudo apt-get install php7.0

之后,您将需要重新启动 Apache 服务:

sudo service apache2 restart

最后,在浏览器中使用您的 localhost 或 IP 地址再次验证。

于 2018-10-07T05:43:03.787 回答
0

我有同样的问题。

我的解决方案是在php.ini文件中设置default_mimetype = "text/html" 。

于 2014-12-21T22:30:57.957 回答
0

如果你使用它可能对你不起作用localhost/info.php

你或许可以从错误中找到线索。在错误消息中找到端口号。对我来说是 80。我将地址更改为http://localhost:80/info.php,然后它对我有用。

于 2018-03-04T17:25:16.583 回答
0

我不小心设置了错误的文件权限。在chmod 644 phpinfo.php信息确实按预期显示之后。

于 2018-11-14T09:06:20.663 回答
0

Windows 10 的另一个可能答案:

该命令在我的机器上不起作用httpd -k restart

尝试使用 Windows 10服务重启相关服务。

于 2018-10-12T11:32:24.343 回答