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>