質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

5800閲覧

CentOS7 PHP7.2でmysqli拡張を有効化できない

mochim

総合スコア15

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2019/02/05 02:05

前提・実現したいこと

WordPressを利用したいため、mysqli等拡張を入れたのですが読み込まれません。
どなたか助言をお願い致します><

CentOS7
PHP 7.2
Apache 2.4.6

試したこと

・インストールが正常にされているかの確認(php -m | grep mysql) php72でインストールしました
mysqli
mysqlnd
pdo_mysql

・extension_dirの指定の確認(php -i | grep extension_dir)
表示された内容に従って、php.iniのextension_dirの値を書き換え。
phpinfo();でも指定先確認。

・php.iniでextension=mysqli.soを指定
先ほど指定したextension_dirの中にファイルがあるのは確認しています。

その他 extension=php_mysqli.dll を追記
再度インストール試しましたが変わらずです。
もちろんapacheの再起動は行っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2019/02/05 02:07

php は、どのようにインストールしましたか? yum ? それ以外?
mochim

2019/02/05 02:44

yum です
CHERRY

2019/02/05 04:01 編集

yum には、php のパッケージがいろいろあるので、インストールの際に具体的に実行したコマンドを記載していただけないでしょうか。 多分 remi だと思うのですが、 remi にも remi-safe だったり、remi-php72 だったりいろいろあるので...
mochim

2019/02/05 04:10

https://www.rem-system.com/centos-php72-inst/ こちらのサイトの通りインストールしたはずです... yum -y install http://rpms.famillecollet.com/enterprise/remi-release-7.rpm yum -y install --enablerepo=remi,remi-php72 php php-pdo php-mysqlnd php-pecl-mysql 一度php周りをアンインストールして正しい手順で再度インストールしていったほうがいいでしょうか。 なに分不慣れなものでいろいろ試してしまったので...
guest

回答1

0

ベストアンサー

yum で、php をインストールしたのであれば、基本的にはインストールするだけで、/etc/php.d ディレクトリに PHP拡張を読み込む設定が作成されるので、デフォルトで有効になるはずですが...

php 5.x など複数の PHP がインストールされていることはありますか?

たとえば、php 5 と 7 が同時にインストールされていると apache の設定では、php5 が優先されたと思います。

# cat /etc/httpd/conf.modules.d/15-php.conf # # PHP is an HTML-embedded scripting language which attempts to make it # easy for developers to write dynamically generated webpages. # # Cannot load both php5 and php7 modules <IfModule !mod_php5.c> <IfModule prefork.c> LoadModule php7_module modules/libphp7.so </IfModule> </IfModule> <IfModule !mod_php5.c> <IfModule !prefork.c> LoadModule php7_module modules/libphp7-zts.so </IfModule> </IfModule>

のように PHP5 が読み込まれていない場合に php7 が有効になります。

一度、httpd -M | grep php を実行してみてください。

# httpd -M | grep php php7_module (shared)

のように php7 を正しく読み込んでいるでしょうか?

投稿2019/02/05 04:40

編集2019/02/05 04:43
CHERRY

総合スコア25171

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mochim

2019/02/05 04:44

php7_module (shared) と表示されました。
CHERRY

2019/02/05 04:51

うーん。 仮に test.php というファイル名 (ファイル名は何でもOK) に ``` <?php phpinfo(); ?> ``` と phpinfo だけの PHP ファイルを作成して、Webブラウザでアクセスすると php の情報画面になると思いますが、 タイトルで表示されるバージョンは幾つですか? 例: ` PHP Version 7.2.14 ` このバージョンは、yum で、インストールした際に表示されたバージョンと同じですか? Loaded Configuration File の行は、/etc/php.ini になっていますか? Additional .ini files parsed の行に ` *mysql*.ini ` のような mysql がつくファイル名はありますか? mysqli のセクションに何が表示されていますか?
CHERRY

2019/02/05 04:52

あと、 yum list installed | grep php を 実行して、@remi-php72 以外の php って 入っていたりしますか?
mochim

2019/02/05 04:54

すみません;お時間いただきありがとうございます>< PHP Version 7.2.14 ←インストールしたものです Loaded Configuration File /etc/opt/remi/php72/php.ini Additional .ini files parsed /etc/opt/remi/php72/php.d/20-bz2.ini〜 Additional .ini files parsedにmysql.iniがなく、また読込先が/etc/php.d じゃないのが 問題でしょうか? こちらの読込先も指定できるのでしょうか...
mochim

2019/02/05 05:32

yum list installed | grep php こちら試したところ、ほぼ@remiと@remi-php72で php-twig.noarch だけ@remi-php71 でした。
CHERRY

2019/02/05 05:48 編集

ん? > Loaded Configuration File /etc/opt/remi/php72/php.ini ということは、 apache の方には、 ` yum -y install --enablerepo=remi,remi-php72 php php-pdo php-mysqlnd php-pecl-mysql ` で、インストールした PHP ではなく ` yum -y install php72-php .... ` でインストールした PHP が、使われていたりしませんか? apache の設定ファイルを ` ls /etc/httpd/conf.modules.d/*php* ` を実行して確認すると php 関係のファイルが2つ以上ないでしょうか? また、 ``` yum list installed | grep php72 ``` を実行すると @remi-php72 以外のファイルが出たりしないでしょうか?
mochim

2019/02/05 16:57

# ls /etc/httpd/conf.modules.d/*php* > /etc/httpd/conf.modules.d/15-php72-php.conf # yum list installed | grep php72 > @remi-php72、@remi-safe(7.2のもの) なので、正常にインストールはされている?ようです...
CHERRY

2019/02/06 00:57 編集

状況を把握しました。 @remi-php72 の php と @remi-safe の php72-php は、どちらも php 7.2 のパッケージですが、別々のパッケージです。 php72-php でインストールした php に対して、@remi-php72 の php-mysqlnd や php-pdo を入れても自動で設定されることはありません。 バージョンが同じであれば、手動で設定することは可能ですが、PHP をアップデートするたびに同じ設定作業をする必要になる可能性があります。 具体的には、 @remi-php72 の php は、 /etc/php.ini が設定ファイルですが、 @remi-safe の php72-php は、 /etc/opt/remi/php72/php.ini が設定ファイルです。 また、デフォルトの拡張モジュールのインストールパスも異なるので、それぞれのパスにファイルを配置したり、設定ファイルを適切に設定する必要があります。(今回のインストールしても反映しないというのがこの部分です。) また、apache モジュール版の PHP と コマンドライン版 PHP が、別々のパッケージを利用している状況というのは、両方の設定を同じに揃えておく必要があり、(環境構築が趣味な人や複数のバージョンを使う必要がある等の特別な理由がないのであれば)管理が面倒になると思います。 WordPress の場合、コマンドラインでの操作はほぼないので影響は少ないと思いますが、PHP のフレームワークによっては、 Web からと コマンドラインのバッチ操作の両方が必要なものもあり、Web とコマンドラインの PHP の設定が異なることで、不具合が発生したり、原因究明に時間がかかったりすることが考えられます。 @remi-safe の php72-php は、複数バージョンのphpをインストールできるように ファイルの配置や設定ファイルをバージョンごとに分けるような構成にされていますので、複数バージョンをインストールして、場合によって切り替える必要があるという状況でなければ、@remi-safe のパッケージをアンインストールして @remi-php72 の php で、統一する方が良いと思います。
mochim

2019/02/06 01:13 編集

なるほど、私がどこかの操作で別のパッケージをインストールしてしまったためややこしいことになっていたのですね、、 大変詳しくありがとうございます! 切り替え作業は必要ありませんので、アンインストールしてみたところ正常に拡張等も読み込まれました。 どちらも普通にインストールされるものだと思っていましたので勉強・調査不足です... これで作業が進みます。 ありがとうございました*ˊᵕˋ)੭
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問