為什么你的 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 --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() 是很敏感的信息,平時最好還是不要暴露給客戶端,因此測試完我就趕緊給關掉了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM