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

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

ただいまの
回答率

90.04%

FreeBSD上でCakePHPを構築した際,PHP PDO not found エラーが出ます.

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,744

yamadoc

score 18

現在,FreeBSD上にCakePHPを構築している作業を行っているのですが,
以下のようなエラーが出て困っています.

Fatal Error
Error: Class 'PDO' not found    
File: APP_DIR/Vendor/cakephp/cakephp/lib/Cake/Model/Datasource/Database/Mysql.php    
Line: 210

Notice: If you want to customize this error message, create sample/View/Errors/fatal_error.ctp

実際には,下記の通り,PHP PDOモジュールをインストール済みで,何故うまくいかないのか全くわかりません.

 php -v

PHP 5.6.27 (cli) (built: Oct 25 2016 14:58:01) (DEBUG)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2016, by Zend Technologies

 php -m

[PHP Modules]

mysql
mysqli
mysqlnd
openssl
pcre
PDO
pdo_dblib
PDO_Firebird
pdo_mysql
PDO_ODBC
pdo_pgsql
pdo_sqlite

sqlite3

Zend OPcache

[Zend Modules]
Zend OPcache

test.php として下記のファイルを用意してブラウザからアクセスしたのですが,
どうやらインストールできていないようですが,ターミナル上では問題ないようです.

1 <?php
2 if (class_exists('PDO')) {
3     print "PDO is installed";
4 } else {
5     print "PDO NOT installed";
6 }
7
8 phpinfo();
9 ?>
PDO NOT installed

 php test.php

PDO is installed

お手数をおかけいたしますが,どうぞよろしくお願いいたします.

以下,追記です.

 reboot

して,システムを再起動しました.

test.php をブラウザから見た結果のBuild Date に着目したところ,
Oct 22 2016 01:28:27

なのに対し,

 php test.php

では,Build Dateは以下の通りとなりました.
Build Date => Oct 25 2016 14:57:52

バージョンが同じ異なる二つのPHPが混在しているのでしょうか.
ターミナル上
PHP Version => 5.6.27
ブラウザ上
PHP Version 5.6.27

再び,追記です.
そもそも,CakePHPの2.8.9とPHP5.6の相性が悪いといった事実はありますでしょうか.
当方が調べた限り,あまり関係がなさそうに見えました.

phpinfo() の実行結果を,ターミナル上,ブラウザ上に分けてご報告いたします.

まず,Additional .ini files parsed について
この項目は両者とも一致いたしました.

ターミナル上

 php test.php | grep -i PDO

PDO is installedphpinfo()
/usr/local/etc/php/ext-20-pdo.ini,
/usr/local/etc/php/ext-30-pdo_dblib.ini,
/usr/local/etc/php/ext-30-pdo_firebird.ini,
/usr/local/etc/php/ext-30-pdo_mysql.ini,
/usr/local/etc/php/ext-30-pdo_odbc.ini,
/usr/local/etc/php/ext-30-pdo_pgsql.ini,
/usr/local/etc/php/ext-30-pdo_sqlite.ini,
API Extensions => mysql,mysqli,pdo_mysql
PDO
PDO support => enabled
PDO drivers => dblib, firebird, mysql, odbc, pgsql, sqlite
pdo_dblib
PDO Driver for FreeTDS/Sybase DB-lib => enabled
PDO_Firebird
PDO Driver for Firebird => enabled
pdo_mysql
PDO Driver for MySQL => enabled
pdo_mysql.debug => no value => no value
pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock
PDO_ODBC
PDO Driver for ODBC (unixODBC) => enabled
pdo_pgsql
PDO Driver for PostgreSQL => enabled
pdo_sqlite
PDO Driver for SQLite 3.x => enabled

ブラウザ上
PDO NOT installed

PDO関連,存在せず

以上,よろしくお願い申し上げます.

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • yamadoc

    2016/10/25 16:15

    Additional .ini files parsed この項目は全く同じでした.

    キャンセル

  • yamadoc

    2016/10/25 16:16

    ブラウザの場合,PDO関連の出力はありません.

    キャンセル

  • yamadoc

    2016/10/25 16:17

    お手数をおかけいたしますが,回答欄へ移動できないでしょうか

    キャンセル

回答 2

checkベストアンサー

0

※あまり原因が特定できていませんが、情報追加欄だとやりにくようなのでこちらへ移動

設定ファイルが違わないか確認するため、以下を見てみてください。
Loaded Configuration Fileは同じですか?
Scan this dir for additional .ini filesは同じですか?
Additional .ini files parsedにpdo.iniみたいな記載はありますか?
直接関係ないですが、HTTPサーバはApache? nginx? php-fpmを使っていますか?

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/25 19:28 編集

    すみません。extension_dirの複数指定は自分の環境でやってみましたが、うまくいかないみたいですね...
    もう一度調べたら複数指定はできないみたいでした...混乱させてしまってすみません。

    なるほど、それは担当者に聞いてみたほうがいいですね!

    キャンセル

  • 2016/10/25 20:51

    なんらかのデバグオプション付きでphpを入れてしまっているのかもしれませんね
    pdo関連のモジュールをportsから入れ直したほうがよいかもしれません。

    キャンセル

  • 2016/10/26 15:52

    皆さん,ありがとうございます.

    前任者に確認し,
    /usr/local/lib/php以下を削除した上で,
    改めて,portsから再構築を行ったところ,無事にPDO環境を構築することができました.

    キャンセル

0

phpinfo()で以下確認ください

  • PDOセクションが表示されること
    PDO driversが表示されます

  • pdo_mysqlセクションが表示されること
    Client API version が表示されます
    また、pdo_mysql.default_socketで使用されるソケットが表示されます

  • mysqlndのセクションが表示される
    API Extensions に pdo_mysql が表示されます

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/10/25 16:00

    ご回答頂きありがとうございます.

    ターミナル上でphpinfo()を実行したところ,
    以下の通りとなりました.

    PDO_ODBC

    PDO Driver for ODBC (unixODBC) => enabled
    ODBC Connection Pooling => Enabled, strict matching

    pdo_mysql

    PDO Driver for MySQL => enabled
    Client API version => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $

    Directive => Local Value => Master Value
    pdo_mysql.debug => no value => no value
    pdo_mysql.default_socket => /tmp/mysql.sock => /tmp/mysql.sock

    mysqlnd

    mysqlnd => enabled
    Version => mysqlnd 5.0.11-dev - 20120503 - $Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $
    Compression => not supported
    core SSL => supported
    extended SSL => not supported
    Command buffer size => 4096
    Read buffer size => 32768
    Read timeout => 31536000
    Collecting statistics => Yes
    Collecting memory statistics => Yes
    Tracing => n/a
    Loaded plugins => mysqlnd,example,debug_trace,auth_plugin_mysql_native_password,auth_plugin_mysql_clear_password
    API Extensions => mysql,mysqli,pdo_mysql

    取り急ぎ,お返事まで.

    キャンセル

  • 2016/10/25 16:05

    たびたび失礼いたします.

    ブラウザ上で,phpinfo()を実行したところ,下記の通りとなりました.

    PDOセクションは存在せず
    pdo_mysql セクションは存在せず
    mysqlnd
    API Extensions no value

    よろしくお願い申し上げます.

    キャンセル

  • 2016/10/25 16:16

    pkg info|grep php56

    で、ご利用のphp5.6.27に相当する
    mod_php56-5.6.27
    php56-pdo-5.6.27
    php56-pdo_mysql-5.6.27
    がインストールされているか確認してみてください

    見た感じCLIでは利用可能になってますがapacheのモジュールが
    うまく読まれていないように見えますが

    キャンセル

  • 2016/10/25 16:22

    pkg info | grep php56
    を実行させていただいたところ,下記の通り,存在しておりました.
    mod_php56-5.6.27 PHP Scripting Language
    php56-pdo-5.6.27 The pdo shared extension for php
    php56-pdo_mysql-5.6.27 The pdo_mysql shared extension for php

    取り急ぎ,お返事まで.

    キャンセル

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

  • ただいまの回答率 90.04%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる