PHP
2009/3/4更新
対応バージョン: 5.2.9
既にPHPが導入されている環境に拡張モジュールをインストールする手順を示す。
ここではPHP 5.2.9配布物に含まれるXSLモジュールをインストールするものとする。
make,インストール
% cd php-5.2.9/ext/xsl % phpize % ./configure % make % sudo make install Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
上記ディレクトリにxsl.soがインストールされる。
php.ini編集
拡張モジュールがインストールされたディレクトリと、有効にするモジュールをそれぞれ明記する。
% sudo vi /usr/local/lib/php.ini extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/" extension=xsl.so
確認
拡張モジュールが有効になったことを確認する。
% php -i| grep xsl xsl libxslt Version => 1.1.24 libxslt compiled against libxml Version => 2.6.32 libexslt Version => 1.1.24
2009/3/3更新
対応バージョン: 5.2.9
PHPでDBにアクセスするにはPDO(PHP Data Objects)を使用する。
以下、簡単なサンプルとともに説明する。
例外処理定義
まずDBアクセス時にエラーが起きた場合の例外処理を定義しておく。
try { <<<DBアクセス処理を記述>>> } catch (PDOException $e) { var_dump($e->getMessage()); }
エラーが起きるとPDOExceptionオブジェクトが生成されるのでこれを補足してgetMessageメソッドをコールすることによりエラーメッセージを取得する。
以下、実際のDBアクセスについて説明する。
DB接続
以下の引数をPDOに与えてハンドルを生成する。
DSN(データベースのデータソース名)
データベースにアクセスするユーザ名
上記ユーザのパスワード
PDOのオプション
例) SQLiteの場合
$dsn = "sqlite:/tmp/test.db"; $user = null; $password = null; $pdo = new PDO($dsn, $user, $password);
例) MySQLの場合
$dsn = "mysql:host=localhost, dbname=test.db"; $user = "root"; $password = "*******"; $pdo = new PDO($dsn, $user, $password);
テーブル作成
クエリ文字列を生成し、PDO::queryメソッドをコールする。
ここでは以下のようなスキーマ定義を持つテーブルを作成する。
テーブル名
property
持ち物リスト
カラム
name (text)
持ち物名
num (integer)
個数
この場合、コードは以下のようになる。
$query = "CREATE TABLE property(name text primary key, num integer)"; $pdo->query($query);
データ挿入
PDO::prepareメソッドによりPDOStatementオブジェクト(ステートメントハンドル)を生成し、PDOStatement::bindValueメソッドで各カラムにデータを割り付けた後にPDOStatement::executeメソッドを実行する。
ここでは上記で作成した持ち物リストテーブルに以下のデータを挿入する。
iPhone
1台
Wii
1台
LoveLetter
30枚
この場合、コードは以下のようになる。
$name_list = array("iPhone", "Wii", "LoveLetter"); $num_list = array(1, 1, 30); $query = $pdo->prepare("INSERT INTO property(name, num) VALUES(:name, :num)"); for($i = 0; $i < count($name_list); $i++) { $query->bindValue(':name', $name_list[$i]); $query->bindValue(':num', $num_list[$i]); $query->execute(); }
PDOStatementオブジェクトを使用し終わったらnullをセットしてオブジェクトを開放する。
$query = null;
データ読み出し
PDO::queryメソッドによりステートメントハンドルを生成し、PDOStatement::fetchメソッドでデータを読み出す。
上記で挿入したデータを取り出してみる。
$select = $pdo->query("SELECT * FROM property"); while($row = $select->fetch(PDO::FETCH_ASSOC)) { echo implode("|", $row) . "\n"; // 各カラムを"|"で連結 } $select = null;
結果は以下のようになる。
iPhone|1 Wii|1 LoveLetter|30
DB切断
PDOオブジェクトにnullをセットしてオブジェクトの開放、つまりDBからの切断を行う。
$pdo = null;
まとめ
上記のコードをまとめると以下のようになる。
try { // // DBハンドル生成 // $dsn = "sqlite:/tmp/test.db"; $user = null; $password = null; $pdo = new PDO($dsn, $user, $password); // // テーブル作成 // < テーブル定義 > // - テーブル名:property ........ 持ち物リスト // - カラム :name (text) ..... 持ち物名 // :num (integer) ... 個数 // $query = "CREATE TABLE property(name text primary key, num integer)"; $pdo->query($query); // // データ挿入 // $name_list = array("iPhone", "Wii", "LoveLetter"); $num_list = array(1, 1, 30); $query = $pdo->prepare("INSERT INTO property(name, num) VALUES(:name, :num)"); for($i = 0; $i < count($name_list); $i++) { $query->bindValue(':name', $name_list[$i]); $query->bindValue(':num', $num_list[$i]); $query->execute(); } $query = null; // // データ読み出し // $select = $pdo->query("SELECT * FROM property"); while($row = $select->fetch(PDO::FETCH_ASSOC)) { echo implode("|", $row) . "\n"; // 各カラムを"|"で連結 } $select = null; // // DB切断 // $pdo = null; } catch (PDOException $e) { var_dump($e->getMessage()); }
2013/05/05更新
対応バージョン: 5.4.14
公式サイト
参考サイト
準備
あらかじめインストールしておくもの
Apache
関連資料・記事
以降はApache 2が/usr/local/apache2にインストールされているものとして説明する。
導入OS
Ubuntu 13.04
インストール
配布ファイル展開
% tar jxvf php-5.4.14.tar.bz2 % cd php-5.4.14
make,インストール
% ./configure <オプション>
オプションには様々なものがあるが、ここでは以下のものを指定する。
Apache2のapxs使用
--with-apxs2=/usr/local/apache2/bin/apxs
マルチバイト文字列サポート
--enable-mbstring
mcryptサポート
--with-mcrypt
GDサポート
--with-gd
% make % sudo make install
インストール物 (man,infoは除く)
/usr/local/bin/pear /usr/local/bin/peardev /usr/local/bin/pecl /usr/local/bin/phar -> /usr/local/bin/phar.phar /usr/local/bin/phar.phar /usr/local/bin/php /usr/local/bin/php-config /usr/local/bin/phpize /usr/local/lib/php/* /usr/local/include/php/* /usr/local/etc/pear.conf /usr/local/apache2/modules/libphp5.so
上記の他、Apacheの設定ファイル/usr/local/apache2/conf/httpd.confに以下の行が追加される。
LoadModule php5_module modules/libphp5.so
(*) httpd.confにLoadModule行が一行もないと以下のエラーになるので「LoadModule dummy dummy.so」などとダミー行を作っておく。インストールが終わったらダミー行は削除してよい。
apxs:Error: At least one `LoadModule' directive already has to exist..
各種設定
PHPの設定
/usr/local/lib/php.iniにて設定を行う。
用途に応じて2種類の雛形が用意されているので適切なファイルをコピーして使用する。
php.ini-development
開発用(デバッグモードON、統計情報収集モードON等)
php.ini-production
本稼働用
% sudo cp php.ini-development /usr/local/lib/php.ini
ここでは各設定は割愛する。詳しくは以下を参照のこと。
php.iniディレクティブ - 日本PHPユーザ会Apacheの設定
/usr/local/apache2/conf/httpd.confに以下の設定を追加する。
PHPコードをパースする拡張子の指定
例) 拡張子が.phpと.phtmlのファイルをPHPとしてパースする
<FilesMatch "\.ph(p|tml)$"> SetHandler application/x-httpd-php </FilesMatch>
設定を追加したらApacheを再起動する。
% sudo /etc/init.d/apache stop % sudo /etc/init.d/apache start
動作確認
以下のようなHTMLを作成してブラウザで参照し、PHPのインストール状況が表示されれればOKである。ファイルの拡張子は上記で設定したいずれかにする。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>TEST</title> </head> <body> <?php phpinfo(); ?> </body> </html>