CakePHPやるなら押さえておきたいポイント~PDOインストール~
CakePHPを使ってみるにあたって押さえておきたいポイントをまとめていきます。
今回はCakePHPとデータベース接続に必要なPDOインストールについてです。
1.PDOドライバがインストールされていないとエラーが発生
直接CakePHPとは関係ありませんが、ここが上手くいっていないと色々なエラーの原因となりかねません。
特にscaffoldやbakeといったCakePHPの機能(簡単にDBのテーブルへの操作(表示・編集・削除)が行える)によって作成したページで、
のようなエラーが多発するときには、PDOが原因の可能性があります。
そのほかにテーブルの「id」カラムがない、「id」カラムが主キーになっていない、
などの場合もあります。そこもチェックした上でエラーが消えないようならばPDOも疑ってみてください。
※※※
なお、以降はデータベースとしてMySQLを使用している場合の例です。
PostgreSQLの場合も同様に考えられますが、MySQLと文言が異なりますので注意してください。
※※※
2.エラーの原因
次の原因が考えられます。
1.PDOがインストールされていない
2.個々のデータベース接続用のPDOドライバがインストールされていない
3.状況の把握
エラーの原因を特定してみましょう。
まず、PHPのインストール情報を確認してみます。
次のようなPHPファイルを作成し、Webサーバにアップしてください。
<? //info.php phpinfo(); ?>
ブラウザでアクセスするとPHPの情報が一覧で確認できます。ここで次の2点を確認しましょう。
1.項目「PDO」の列「enabled」に「mysql」が入っているか
2.項目「pdo_mysql」の列「enabled」に「PDO Driver for Mysql」のバージョン記載があるか
これがないとPDOでmysqlに接続することはできません。そもそも項目がない場合も同様です。
なお、PHP5.1以降でPDOはデフォルトで入っているので、5.1以降の場合はPDOに関しては問題ないでしょう。
4.対処方法
PHPを再インストールしましょう。
# cd /usr/local/src/php-X.X.X/ # ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --with-mysql=/usr/local/mysql --with-pdo-mysql=/usr/local/mysql # make # make install
「–with-pdo-mysql=/usr/local/mysql」が必要なわけです。
これによりPHP組込でpdo_mysqlがインストールされます。
5.その他の原因・対処方法
PHPを再インストールは抜本的対応ですが、次のような手法も考えられます。
yumでインストール
# yum install php-mysql
peclでインストール
peclが使えることが前提で、次のコマンドを実行します。
# pecl install pdo_mysql
※pecl installが上手くいかない場合もあります。
phpizeでインストール
phpizeは、拡張モジュールをビルドする低レベルなビルドツールです。
これを使用することにより、PHPをソースから再コンパイルせず、拡張モジュールをビルドすることができます。
# pecl download pdo_mysql # tar xvfz PDO_MYSQL.x.x.x.tgz # cd PDO_MYSQL.x.x.x # phpize # ./configure --with-pdo-mysql=/usr/local/mysql # make # make install
・上記ができたらphp.iniの「extension=~~.so」が記載されているあたりに次の行を追加します。
extension=pdo_mysql.so
・最後にApache再起動を行います。
ここで、php.iniの記述が間違っていると上手く起動しません。
Apache再起動時のerror_logを確認して問題なく起動されているかどうかを確認しましょう。
6.まとめ
CakePHPは初期設定が結構面倒でこれ以外にもいろいろとはまってしまう部分があるかもしれません。
初期設定をしっかり行い、快適なCakePHP開発を行えるようにしましょう。
⇒CakePHPにインストール手順についてはこちらにまとめています。
WEBアプリケーション関連 人気連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載