web-dev-qa-db-ja.com

16.04への更新時にpdo_mysqlが削除されました

最近、16.04 LTSに更新しました。そして、私のPHPを7.0に更新しました。さて、pdo_mysqlがどのように削除されたか。 magentoのWebサイトを開発するには、この拡張機能が必要です。 phpinfoでは、私は見つけます

pDOサポート:有効なPDOドライバー:値なし

私はたくさんグーグルで調べましたが、これらの解決策を見つけました:

  1. Php-mysqlをインストールします(すでに最新バージョンでした)
  2. Php7.0-mysqlをインストールします(すでに最新バージョンでした)
  3. Php.ini(/etc/php/7.0/Apache2/php.ini)の次の変更:拡張機能pdo.so、pdo_mysql.so、mysqli.soを有効にしました。また、正確なパスを指定して同じことを試みました(変更後にApacheを再起動しました)
  4. Peclを使用してpdo_mysqlをインストールしようとしました。

上記の方法はどれも役に立たなかったので、もう2日間、これについて頭を痛めています。ヘルプをいただければ幸いです。

Php -r 'phpinfo();'の出力| grep -i pdo:

/etc/php/7.0/cli/conf.d/10-pdo.ini,
PDO
PDO support => enabled
PDO drivers =>  

/ usr/sbin/phpquery -v 7.0 -Mの出力

mysqlnd
sysvmsg
sockets
Gd
mcrypt
phar
xsl
xmlreader
shmop
sysvsem
mysqli
xml
tokenizer
iconv
pdo
pdo_mysql
gettext
simplexml
xmlwriter
opcache
posix
sysvshm
ftp
dom
json
readline
calendar
fileinfo
ctype
wddx
exif

dpkg -l php * mysqlの出力

Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version      Architecture Description
+++-==============-============-============-=================================
ii  php-mysql      1:7.0+35ubun all          MySQL module for PHP [default]
un  php-pdo-mysql  <none>       <none>       (no description available)
rc  php5-mysql     5.6.11+dfsg- AMD64        MySQL module for php5
ii  php7.0-mysql   7.0.4-7ubunt AMD64        MySQL module for PHP
un  php7.0-pdo-mys <none>       <none>       (no description available)
9

この段階で、次のようにして「オフにしてから再びオンにする」ことをお勧めします。

Sudo apt-get purge php-common php5-common

に続く

Sudo rm -r /etc/php

そして、PHP 7.0とmysqlモジュールを再インストールします。

Sudo apt-get install libapache2-mod-php php-mysql

最初にパッケージを削除して、mysqlモジュールを削除して再インストールすることもできます。

Sudo apt-get purge php7.0-mysql

そしてそれらを再びインストールします:

Sudo apt-get install php-mysql

どちらの場合も、apt-get purgeの代わりにapt-get removeを使用して、既存の構成ファイルとパッケージの状態を削除することが重要です。

最も破壊的な方法は、phpenmodコマンドを使用してmysqlモジュールを再度有効にすることです。

Sudo phpenmod mysqlnd pdo_mysql

システムでどのような騒乱が発生したのかわからない場合、正しいアドバイスを提供するのは困難です。

8
oerdnj