FreeBSDでサーバーを立てていて、その中にMySQLを入れています。
SQLインジェクションを防ぐため、プレースフォルプレースフォルダを使用するべく
PDOを使いDB接続を試みているのですが
Error:could not find driver
ブラウザ上で上記のエラーメッセージが表示されます。
色々調べたのですが、CentOSでの解決策ばかりで、FreeBSD向けの解決策の発見には至りませんでした。
PDOファイル自体はあるのですが、何が原因で「ドライバーがない」と言われているのかがわからず、苦戦しております。
どなたか解決策、もしくは考えられるであろう原因をご教授お願いいたします。
###発生している問題・エラーメッセージ
Error:could not find driver
###環境 version
FreeBSD 11.0
MySQL 5.6
PHP 5.6
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
シェルにログイン出来るのでしたら、
bash
1$ php -i | grep pdo 2pdo_mysql 3pdo_sqlite
こんな感じで、なんのDB用のモジュールがロードされているかが確認できます。
pdo_mysql
が表示されない場合はPDOのMySQL用のモジュールが読み込まれていないです。
ロードされていない場合はextension_dirを調べます。
bash
1$ php -i | grep extension_dir 2extension_dir => /usr/local/lib/php/xxxxxxxx => /usr/local/lib/php/xxxxxxxx 3 4$ ls -l /usr/local/lib/php/xxxxxxxx | grep pdo 5-r--r--r-- 1 root wheel 101784 4月 5 2016 pdo.so 6-r--r--r-- 1 root wheel 24320 4月 5 2016 pdo_mysql.so 7-r--r--r-- 1 root wheel 24752 4月 5 2016 pdo_sqlite.so
エクステンションディレクトリにpdo_mysql.so
がない場合は、モジュールがインストールされていない可能性が高いです。
上のコメントを見る限りインストールはされているようなので、iniファイルに設定がないか、設定はあるがsoファイルが所定のディレクトリにないので正常にロードされていないかのどちらかだと思われます。
設定が存在する場合はiniファイルを調べます。
bash
1$ php -i | grep ini 2Loaded Configuration File => /usr/local/etc/php.ini 3Scan this dir for additional .ini files => /usr/local/etc/php
Loaded Configuration File
のiniファイルScan this dir for additional .ini files
のディレクトリにあるiniファイル
のどちらかにextension=pdo_mysql.so
がない場合は追記します。
自分はいつもpkgでインストールしているので、/usr/local/etc/php/extensions.ini
に自動的に追記されます。
portsから入れた場合はもしかしたら追記されないかもしれません…
bash
1$ cat /usr/local/etc/php.ini | grep pdo 2$ find /usr/local/etc/php/ -name '*.ini' | xargs grep pdo 3/usr/local/etc/php/extensions.ini:extension=pdo.so 4/usr/local/etc/php/extensions.ini:extension=pdo_sqlite.so 5/usr/local/etc/php/extensions.ini:extension=pdo_mysql.so ←これがない場合使えない
PDO自体のエラーが出ないということは、pdo.soはロードされていると思われますので、extension=pdo.so
が書かれている下の行あたりにextension=pdo_mysql.so
を追記すれば使えるようになるかと思います。
ちなみにこの手のミドルウェアのハウツーはインストール方法やパスは違えど、CentOSやUbuntuのノウハウでもなんら変わりありませんので、食わず嫌いせず一応確認してみるとよいと思います。
投稿2017/02/22 15:11
総合スコア133
0
アプリのインストールはportsでやってますよね?
/usr/ports/databases/php56-pdo_mysql
あたりをインストールする必要があるでしょう
phpinfo()
などでドライバーがインストールされているかどうかは
確認ができます
投稿2017/02/17 07:02
総合スコア114779
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/20 08:21
2017/02/22 06:52
0
phpの設定ファイルを確認してみたら、どうでしょうか。
- /usr/local/etc/php.ini
- /usr/local/etc/php/*.ini
以下のような、記述が必要だと思います。
<例>
extension=mysql.so extension=mysqli.so extension=pdo.so extension=pdo_mysql.so
投稿2017/02/22 14:19
総合スコア447
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/01 00:47