Ubuntu 16.04 – phpmyadmin Deprecation Notice with PHP 7

這個問題之前小蛙第一次升級到 PHP 7 之後發生過一次,進到 phpmyadmin 的登入介面,就噴出一大堆錯誤警告訊息,看到這心都涼了,又有事情要忙了。

Deprecation Notice in ./../php/php-gettext/streams.php#48
Methods with the same name as their class will not be constructors in a future version of PHP; StringReader has a deprecated constructor
Backtrace
./../php/php-gettext/gettext.inc#41: require()
./libraries/select_lang.lib.php#477: require_once(./../php/php-gettext/gettext.inc)
./libraries/common.inc.php#569: require(./libraries/select_lang.lib.php)
./index.php#12: require_once(./libraries/common.inc.php) 

但實際上處理這問題並不難,大概 Google 了一下得到兩種答案,參考資料1 有完整 Stack Overflow 討論串,小蛙這邊自己備存:

重新安裝新版 phpmyadmin

小蛙第一次為了減少麻煩,直接使用這個方法 (參1)

sudo apt-get remove --purge phpmyadmin php-gettext php-mbstring -y
sudo apt-get autoremove -y
sudo apt-get update
sudo apt-get install phpmyadmin php-gettext php-mbstring -y

這個方法要注意安裝 phpmyadmin 的時候,會提示詢問是否要重新設定 phpmyadmin,小蛙這邊是選不要,因為小蛙想保留原始的 phpmyadmin 設定,這是特別要注意的。

修正出錯的檔案

這個方法直接把出錯的兩支檔案抓出來修改,修改的內容分別如下:

修改 streams.php 檔案

vim /usr/share/php/php-gettext/streams.php

做以下修改

// 找到
function StringReader ($str='') {
// 修改成
function __construct($str='') {
// 找到
function FileReader($filename) {
// 修改成
function __construct($filename) {
// 找到
function CachedFileReader($filename) {
// 修改成
function __construct($filename) {

修改 gettext.php 檔案

vim sudo nano /usr/share/php/php-gettext/gettext.php

做以下修改

// 找到
function gettext_reader($Reader, $enable_cache = true) {
// 修改成
function __construct($Reader, $enable_cache = true) {

參考資料

  1. PHP 7 with phpmyadmin gives lots of Deprecation Notices @ Stack Overflow

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料