DockerのPHP公式イメージでモジュールを追加

PHP公式のDockerイメージを使用する際、モジュールの追加を簡単にする
[shell]docker-php-ext-install[/shell] が用意されている。

[shell]
FROM php:5.4-apache
RUN apt-get update && \
apt-get install -y \
libfreetype6-dev \ # gdに必要
libjpeg62-turbo-dev \ # gdに必要
libpng12-dev && \ # gdに必要
docker-php-ext-install gd mbstring pdo_mysql pdo_mysql mysqli mysql intl
[/shell]

上記では重複して不要なものも入れているので、適宜必要なものだけに修正。

DockerのPHPでMySQL拡張モジュールを使う

PHP PDOのエラー確認

PDOはエラーがあった場合も自動でエラーメッセージを吐かないため、開発時には自分で出力する必要がある。

PDO::setAttribute を使用してエラーの形式を設定。

[php] $pdo = new \PDO( 設定 ); $pdo->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_WARNING); // 処理 var_dump( $pdo->errorCode() ); var_dump( $pdo->errorInfo() ); [/php]

PDO::setAttribute の第一引数に、設定する項目、今回はエラーの設定なのでPDO::ATTR_ERRMODE を指定。第二引数に設定したいエラーモードの種類を指定。
エラーモードには
・PDO::ERRMODE_SILENT
・PDO::ERRMODE_WARNING
・PDO::ERRMODE_EXCEPTION
がある。

公式ドキュメント http://php.net/manual/ja/pdo.error-handling.php

CakePHP3でDBに予約語を使用した際の対応

DBに予約語を使用していた場合は、カラム名をバッククォートで括る必要がある。CakePHP3だとデフォルトでオフになっている。(CakePHP2まではオン)

/cake/config/app.phpにあるDBの設定を 'quoteIdentifiers' => trueに変更。

予約語一覧
https://dev.mysql.com/doc/refman/5.6/ja/reserved-words.html