为什么你的 phpinfo() 无法显示

Posted talk is cheap, show me the cod

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么你的 phpinfo() 无法显示相关的知识,希望对你有一定的参考价值。

一、问题描述

  编写了一个php文件test.php,代码如下:

<?php
    echo phpinfo();
?>

  浏览器访问了一下,却返回了 NULL。

二、问题定位及解决

  网上查了下,大部分人遇到的问题其实是  short_open_tags  的问题,他们的代码如下:

<?
    echo phpinfo();
?>

  这种情况是需要把  php.ini 中的 short_open_tags 打开,然后重新加载 php.ini 服务就OK了。

  这里又有两个问题,一是怎么知道php执行加载的是哪个 php.ini 文件呢,可以在命令行下执行:   php -i | grep php.ini  来找到php.ini 文件;二是如何重新加载 php.ini 文件,如何你的服务器上面启用了php-fpm,一般来说重启 php-fpm 就OK了,命令为:  service php-fmp restart ,如果没有启用   php-fpm 服务(较早版本的php),一般重启 apache服务就OK,命令为 service httpd restart  。

  按照上面的步骤操作完成以后,大部分人遇到的问题就解决了,但是这个是别人的问题,跟我的并不是一个问题 orz...

  无奈,感觉这个东西肯定是跟php的配置有关系,于是去官网看了下php.ini 的文档,里面以后一项配置如下:

  disable_functions string 
   本指令允许你基于安全原因禁止某些函数。接受逗号分隔的函数名列表作为参数。 disable_functions 不受安全模式的影响。 本指令只能设置在 php.ini 中。例如不能将其设置在 httpd.conf

   意思就是php.ini 里面可以配置一些方法,这些方法不能被调用,打开php.ini 找到这个配置,果然 phpinfo() 这个方法被禁用了,如下:

disable_functions = phpinfo,system,proc_open,proc_close,show_source,popen,pclose

   到这里豁然开朗,临时把 phpinfo() 这个方法从disable_functions 中删除掉,重新加载 php.ini 文件,然后再次从浏览器访问  test.php, 这次成功了,问题解决。不过这里要提醒小伙伴们 phpinfo() 是很敏感的信息,平时最好还是不要暴露给客户端,因此测试完我就赶紧给关掉了。

 

以上是关于为什么你的 phpinfo() 无法显示的主要内容,如果未能解决你的问题,请参考以下文章

在浏览器中输入 http://localhost/phpinfo.php 干啥用的?

为啥无法显示片段布局?

centos上搭建好lamp环境后,phpinfo显示正常,但是放上去discuz之后,整个页面都

php-m 已扩展mongo,但phpinfo()却无法显示,new MongoClient()也不行,请问下是怎么回事

phpinfo() 显示 MySQL,PMA 显示 MariaDB

phpinfo()找不到gd项怎么办?