web-dev-qa-db-ja.com

mysqli拡張機能がインストールされていないことを確認します

最近、mysqli拡張機能がサーバーにインストールされていないことがわかりました Centosバージョン2.6。 db接続のドライバをmysqliからmysqlに変更して問題なく動作するようになったので、確認しました。それで、この問題を特定する別の方法/ログはありますか? Apache error_logはそれについて何も言わないからです。

これは本当に問題ではありませんが、将来はもっと複雑になる可能性があります。どうして? mysqliドライバーを使用しているため、Webサイトはエラー/警告のない空白ページで終了し、トラブルシューティングに役立ちます。行ごとに魔法の芸術やテスト行の問題を発見するのは好きではありません。デバッグに役立つログファイルが必要です。

この問題に役立つ情報を提供するために、次のことを行いました。

 cat /proc/version 
 Linux version 2.6.18-308.el5.028stab099.3 (root@rhel5-build-x64) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-46))
5
manix

インストールされているモジュールを一覧表示することで、mysqliがインストールされているかどうかを確認できます。 Cent OSボックスにSSHで接続し、次のコマンドを発行します。

php -m | grep mysqli

何も返されない場合は、mysqli.soがロードされていません。共有オブジェクトがシステムにインストールされているかどうかを確認します。

# Located extension dir
php -i | grep extension_dir
# List mysql.so in the path returned from the previous command
ls -la /usr/lib/php/extensions/no-debug-non-zts-20090626/mysqli.so

Mysqli.soが存在し、-rwxr-x-rxの権限がある場合、システムのグローバルphp.iniファイルにmysqli拡張機能をロード/有効化する必要があります。

# Adjust path to correct php.ini file. 
# Run `php -i | grep "Configuration File"` to locate, if needed
# It might be easier to use vi, or nano, for this
Sudo echo "extension=mysqli.so" >> /etc/php5/php.ini
# Restart Apache
Sudo service httpd restart

そうしないと。システムにmysqli.soがない場合。 rpmをインストールするには、システムのパッケージマネージャーに従って、前のphp.iniステップを繰り返します。

Sudo yum install php5-mysqli
8
emcconville

意外とSudo yum install php5-mysqliこれはmysqliパッケージをインストールしませんでした。さらに意外なことに、PHPバージョン5.5.31で、デフォルトでmysqliがインストールされていると想定していましたが、間違っていました。WHMからApacheをインストールして再構築する必要がありました。

EachApacheを使用してmysqliをインストールするには:

「root」ユーザーとしてWHMにログインします。

「EasyApache」を検索するか、[ソフトウェア]> [EasyApache]に移動します

下にスクロールしてビルドオプションを選択します(以前に保存された構成)

「プロファイルに基づくカスタマイズの開始」をクリックします

Apacheのバージョンを選択し、[次のステップ]をクリックします。

PHPのバージョンを選択し、「次のステップ」をクリックします。

「ショートオプションリスト」から追加オプションを選択

「Exhaustive Options List」を選択し、「MySQL Improvement extension」を探します

「保存してビルド」をクリックします

1
Amar Pratap