エラーメッセージ

Fedora25にアップグレードして久々にWordPressを鯖設定するというか設定済なので localのWordPressを開くと、
以下のように言われました。

お使いのサーバーのphpではwordpressに必要なmysql拡張を利用できないようです

他サイトさまの解決方法

エラーメッセージだけで判断するとFedoraだからPHPのバージョンが新しいすぎるのかなあと思ったのですが ググった限りではPHP 7系統でも動いている様子。
当然次にやることはこのエラーメッセージでググることですね。

ぐぐるとまあ、出てくるわ出てくるわ色んなサイトがひっかっかります。よくある問題みたいです。 大きくは、2つのことが原因のようです。

  • MySQLのPHP拡張が入っていない。
  • /etc/php.iniファイルの の設定が不十分。

対策

答えを最初に書くと、/etc/php.iniが古くなっていたのか、php.iniファイルを一旦削除してphp-commonパッケージを再インストールしたら直りました。 コマンドで書くと、

sudo rm /etc/php.ini
sudo dnf reinstall php-common
sudo systemctl restart httpd

とすれば直りました。

詳細

以下これより先はことの顛末を記述しています。

とりあえず、MySQLのPHPが拡張が入ってないかどうかはパッケージがインストールされてるかどうかですね。
そこで、以下のコマンドを実行して入っているか確認します。

rpm -q php-mysql

とすると

パッケージ php-mysql はインストールされていません。

と言われました。 あれ?入ってないのおかしいなあということでもう少し広めにパッケージデータベースを検索してみます。

rpm -qa|grep php-mysql

としてみると

php-mysqlnd-7.0.14-1.fc25.x86_64

と返ってきました。パッケージ名が変わったんですかね。

それでは、/etc/php.iniの設定がおかしいのかなあと変更してみます。 /etc/php.iniファイルをsudoで開いて

;extension=msql.so 

の;を削除してコメントアウトを外します。つまり以下のようにします。

extension=msql.so 

に書き直します。そして設定変えたのでhttpdサービスを再起動します。

sudo systemctl restart httpd

としてwordpressを開いてみてもエラーメッセージは変わらず…

そして、

php -m | grep mysql

してみても何も返事がなく…

ここで、ではwordpressのバージョンが古いのかなと考え今あるディレクトリをリネームして新しいバージョンを落としてきます。

wordpress Latestをダウンロードして/var/www/htmlに展開します。
が、結果変わらず。

php -m

してみると、なんと

PHP Warning:  PHP Startup: Unable to load dynamic library './zip.so' - ./zip.so: cannot open shared object file: No such file or directory in Unknown on line 0

とズラズラーッとWarningが出るではありませんか。

確かに/etc/php.iniファイルを弄ったのに変化ないし、弄ってなくてもタイトル通りのエラーが出ていたのでひょっとして/etc/php.iniファイルが壊れてるのかと思い、

sudo rm /etc/php.ini
sudo dnf reinstall php-common

してみました。パッケージ名がphp-commonとわかったのは

sudo dnf provides /etc/php.ini

としてphp.initの在り処がphp-commonと表示されたからです。

php -m |grep mysql

を再度実行してみると

mysqli
mysqlnd

と表示され、エラーもなくなりました。

早速httpdを再起動させるとエラーメッセージなくWordPressのインストール画面が!!

無事解決してなによりです。 実はこれ以外にも一度データベースを削除しないといけなくなったりしましたが、 これは別記事にする予定。

参考: お使いのサーバーの PHP では WordPress に必要な MySQL 拡張を利用できないようです。 KUJIRA NOTE