php程式碼安全phpinfo()出不來的解決方法:先開啟php.ini文件,找到「short_open_tag」項,設定為「short_open_tag = On」;然後重啟apache,重新載入php.ini服務即可。
本教學操作環境:windows7系統、PHP7.1版,DELL G3電腦
一、問題描述
寫了一個php檔案test.php,程式碼如下:
<?php echo phpinfo(); ?>
瀏覽器造訪了一下,卻回傳了NULL。
二、問題定位及解決
網上查了一下,大部分人遇到的問題其實是 short_open_tags 的問題,他們的程式碼如下:
<? echo phpinfo(); ?>
解決方法:
這種情況需要打開php.ini文件,找到“short_open_tag”,將short_open_tag = Off 這行註釋掉,再開啟;short_open_tag = On 就可以了,然後重新啟動apache,重新載入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() 是很敏感的訊息,平常最好還是不要暴露給客戶端,因此測試完我就趕緊給關掉了。
推薦學習:《PHP影片教學》
以上是php程式碼安全phpinfo()出不來怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!