這個問題之前小蛙第一次升級到 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 討論串,小蛙這邊自己備存:

1. 重新安裝新版 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 設定,這是特別要注意的。

2. 修正出錯的檔案

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

  • 修改 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

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *