Windows 10を使用しており、Apache2.4、PHP7.2、MySQLをインストールしています。pdo_mysqlのドライバーのインストールに問題があります。
php.ini ファイルを編集し、拡張機能セクションに次の内容を追加しました。
extension=pdo_mysql
また、extension_dir ディレクティブを次のように設定しました。
"C:\php72\ext"
コマンド コンソールに「php -m」と入力すると、PDO と pdo_mysql の両方がリスト表示されます。
print_r(PDO::getAvailableDrivers());
Apache を再起動しましたが、またはを含む .php ファイルを実行すると、phpinfo();
PDO 用のドライバーがインストールされていないことがわかります。
私のhttpd.confファイルには
PHPIniDir “C:\php72\”
これをスラッシュとバックスラッシュを使用するように変更し、末尾のスラッシュを追加したり削除したりして、変更するたびに Apache を再起動しました。それでも pdo_mysql ドライバーをロードできません。
問題は PHP ではなく Apache にあるように思われます (コマンド コンソールで php -m を実行すると pdo_mysql モジュールが表示されるため)。しかし、何を間違えたのかわかりません。同じ問題を抱えている他の人を検索しましたが、解決策は常に PHPIniDir であるように思われ、これは正しく設定したと思います。
私が使用しているマシンでは既に IIS が実行されていたため、Apache はデフォルトではなくポート 8090 をリッスンしています。これが関連しているかどうかはわかりません。
ご協力いただければ幸いです。
答え1
Apache サービスをアンインストールし、C:\Apache24 を削除して最初からインストールし、以前と同じように pdo_mysql をインストールする手順に従いました。
答え2
私も同じ問題を抱えていました。CLI 経由で実行しているときはモジュールがロードされますが、Apache 経由で同じ PHP 設定を実行しているときはロードされませんでした。
私の場合の解決策は、extension_dir
php.ini ファイルでモジュール フォルダーの絶対パス (私の場合は C:\php80\ext) を設定することでした。
現在、cli と Apache の両方がモジュールを正しくロードしています。
答え3
私の場合、Apache で Fast CGI をセットアップするために従っていた愚かな指示により、ini ファイルが配置されるはずの場所に exe ファイルを配置するように指示されました。
# Where is your php.ini file?
FcgidInitialEnv PHPRC "c:/Program Files/php/php.exe" // should be ini
それを ini に変更したらうまくいきました。php で php.exe を ini ファイルとして設定できるのは驚きです...