Apache が PDO ドライバーを見つけられない

Apache が PDO ドライバーを見つけられない

Windows 10を使用しており、Apache2.4、PHP7.2、MySQLをインストールしています。pdo_mysqlのドライバーのインストールに問題があります。

php.ini ファイルを編集し、拡張機能セクションに次の内容を追加しました。

extension=pdo_mysql

また、extension_dir ディレクティブを次のように設定しました。

"C:\php72\ext"

コマンド コンソールに「php -m」と入力すると、PDO と pdo_mysql の両方がリスト表示されます。

php -m を示すコマンド コンソールのスクリーンショット

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_dirphp.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 ファイルとして設定できるのは驚きです...

関連情報