SQL AnywhereとPHPの使用前に

このホワイトペーパーは、SQL Anywhere 11 と PHP 5 を対象に作成されました。
しかし、この内容は過去及び将来のリリースでも適用できる場合があります。

概要

このホワイトペーパーでは、PHP と SQL Anywhere を使用して、豊富な動的コンテンツと機能性を備えた Web アプリケーションを作成するための概要について説明します。

PHP は、主に Web 開発者向けの標準的なサーバサイド・スクリプト言語です。PHP マニュアルでは、以下のように説明されています。

PHP は、HTML 埋め込み型のスクリプト言語です。多くの構文は、C、Java、および Perl 言語から転用されていますが、PHP 特有の独自の機能もいくつか加えられています。この言語の目的は、Web 開発者が動的に生成されるページをすみやかに記述できるようにすることです。

SQL Anywhere は、標準的なリレーショナル・データベース管理システムです。SQL Anywhere のマニュアルでは、以下のように説明されています。

SQL Anywhere は、データの管理およびエンタープライズ・データの交換テクノロジを提供する包括的なパッケージです。SQL Anywhere を使用すれば、サーバ環境、デスクトップ環境、モバイル環境、リモート・オフィス環境に適したデータベース・ベースのアプリケーションを迅速に開発することができます。

このホワイトペーパーに記載されている手順を実行するには、以下のソフトウェアをインストールする必要があります。

  • Web サーバ
    最も一般的な Web サーバは、Apache および IIS ですが、PHP をサポートするWeb サーバであればどの Web サーバでも構いません。
  • PHP
    Web サーバと同じコンピュータにインストールします。
  • SQL Anywhere
    Web サーバと同じコンピュータにインストールします。または、別のコンピュータに SQL Anywhere をインストールし、SQL Anywhere クライアント・ソフトウェアを Web サーバおよび PHP と同じコンピュータにインストールします。
  • SQL Anywhere 用 PHP 拡張モジュール
    PHP extensions ディレクトリにコピーし、拡張モジュールをロードするように PHP 構成ファイル (php.ini) を修正します。拡張モジュールが SQL Anywhere クライアント・ソフトウェアをロードできるように、使用している環境を変更する必要があります。

Web サーバと PHP のインストール

Apache は、http://httpd.apache.org からダウンロードして入手することができ、PHP は、http://www.php.net からダウンロードして入手することができます。

また、Apache および PHP は、XAMPPWampServerLinux パッケージ、または一部のLinux ディストリビューションなどのディストリビューションにも含まれています。これらのディストリビューションの多くは、構成済みの Apache と PHP をインストールするため、Apache とPHP を起動してすぐに実行できるうえ、個別にインストールするよりも設定作業が少なくて済みます。

IIS は、Windows Server 2003 および Windows Server 2008 ではデフォルトでインストールされ、Windows XP Professional および Windows Vista ではオプションでインストールされます。PHP ダウンロード・サイトに、Windows 用 PHP インストーラのバイナリがあります。なお、IIS は、Windows のみに限定されます。

Web サーバおよび PHP の設定手順については、このホワイトペーパーでは説明しませんが、Apache またはIIS と PHP の設定方法が説明されている資料は、インターネット上に多数あります。Web サーバの設定に慣れていない場合は、デフォルトのインストール・オプションを使用してください。

デフォルトでは、Web サイトが、ファイル・システム上に 1 つのルート・ディレクトリと複数のサブディレクトリとして構成されます。IIS を使用する場合、デフォルトのルート・ディレクトリはc:\inetpub\wwwroot になります。Apache を使用する場合、ルート・ディレクトリがDocumentRoot 構成オプションによって制御されます。DocumentRoot のデフォルト値はディストリビューションによって異なり、またDocumentRoot の設定場所も異なります (通常はhttpd.conf という名前のファイル)。Apache のディストリビューションの多くは、http://localhost に phpinfo() ページへのリンクが付いたデフォルトの Web ページが設定されています。Apache のDocumentRoot 設定を指定するには、このphpinfo() リンクをクリックし、DOCUMENT_ROOT を探します。

PHP スクリプトを実行するには、Web サイト内のディレクトリに PHP ソース・ファイルをコピーし、ブラウザでそのファイルを参照します。Web サーバが .php ファイル拡張子を認識し、自動的に PHP インタプリタを使用してブラウザ用の HTML 出力を生成します。試しにローカル Web サイトのルート・ディレクトリ内に以下の PHP スクリプトを作成してみてください。ファイルにphpinfo.php という名前を付けます。ブラウザでhttp://localhost/phpinfo.php を表示することにより、このスクリプトを実行します。このとき、Web サーバが稼働している必要があります。

<html>
<body>
<?php
phpinfo();
?>
</body>
</html>

PHP はコマンド・ラインからでも実行でき、トラブルシューティング時にはこの方法が役立ちます。コマンドphp -i は、PHP スクリプトでphpinfo() を呼び出した場合と同じ PHP 環境情報を出力します。PHP 実行可能ファイルを PATH に指定するか、または PHP プログラムの完全修飾ファイル名が必要になります。

SQL Anywhere のインストール

SQL Anywhere Web Edition は Windows、Linux、および Mac OS X オペレーティング・システムで使用できる無償版の SQL Anywhere であり、Web アプリケーションの開発および配備を行うことができます。まず、登録してライセンス・キーを電子メールで受け取る必要があります。ライセンス・キーを受け取ったら、SQL Anywhere をダウンロードし、インストール手順に従います。製品マニュアルは製品とは別にダウンロードできますが、オンライン・マニュアルを使用することもできます。

SQL Anywhere 用 PHP 拡張モジュール

PHP を強化する PHP 拡張モジュールは、PHP プログラムで追加プログラミング・インタフェースを使用できるようにします。SQL Anywhere 用 PHP 拡張モジュールは、SQL Anywhere 用の PHP プログラミング・インタフェースを提供します。SQL Anywhere 用 PHP 拡張モジュールは、こちらからダウンロードできます。

PHP 拡張モジュールは、共有ライブラリ (Windows の場合は DLL) として実装されます。SQL Anywhere 用PHP 拡張モジュールの命名規則は、プラットフォームによって異なります。PHP のバージョンごとに異なる拡張モジュールがあります。PHP のバージョンは、ファイル名の「5.x.y」の部分で識別します。使用する PHP のバージョンが、最新の SQL Anywhere 用 PHP 拡張モジュールよりも新しい場合は、最新の SQL Anywhere 用PHP 拡張モジュールを使用してください。たとえば、PHP 5.2.6 を使用する場合、PHP 5.2.5 の SQL Anywhere 用 PHP 拡張モジュールを使用します。

Linux および Solaris では、PHP 拡張モジュールの名前はphp-5.x.y_sqlanywhere[_r].so のようになり、Mac OS X ではphp-5.x.y_sqlanywhere[_r].dylib のようになります。スレッド・バージョンのライブラリは_r で示されます。非スレッド・バージョンを必要とする理由がないかぎり、スレッド・バージョンを使用してください。PHP の [Thread Safety] が有効な場合は、スレッド・バージョンを使用する必要があります。なお、PHP の [Thread Safety] が無効な場合は、どちらのバージョンでも使用できます。

Windows では、PHP 拡張モジュールの名前はphp-5.x.y_sqlanywhere.dll のようになります。Windows用の拡張モジュールはスレッド・バージョンです。

Windows での PHP モジュールのインストール

  1. PHP 構成ファイル (php.ini) を探します。php.ini を探す最も良い方法は、phpinfo() 出力で php.ini または[Loaded Configuration File] を探すことです。コマンド・ラインから PHP を使用する場合と、Apache または IIS 内で PHP を使用する場合とでは、ファイルの場所が異なる場合があります。
  2. テキスト・エディタでphp.ini を開き、extension_dir を探します。extension_dir は、PHP 拡張モジュールがコピーされるファイル・システム上のディレクトリを指定します。extension_dir にディレクトリが設定されていない場合、PHP インストール環境にextensions という名前の新しいサブディレクトリを作成してから、php.ini を編集して extension_dir に新しいディレクトリの完全修飾名を設定します。
  3. SQL Anywhere 用 PHP 拡張モジュールをダウンロードして展開します。php-5.x.y_sqlanywhere.dll という名前のファイルを取得してください。php.ini ファイルのextension_dir エントリで指定したディレクトリにファイルをコピーします。
  4. PHP の起動時に必ず SQL Anywhere 用 PHP 拡張モジュールが自動的にロードされるようにするには、php.ini ファイルの[Dynamic Extensions] セクションに以下の 1 行を追加します。extension=php-5.x.y_sqlanywhere.dll
  5. SQL Anywhere 用 PHP 拡張モジュールがSQL Anywhere インストール環境内にあるライブラリを使用できるように、使用している環境を変更します。このとき、SQL Anywhere インストール環境のbin32 サブディレクトリを PATH に指定する必要があります。Windows の PATH は、[コントロールパネル] を使用して変更できます。PATH を確認するには、phpinfo() 出力の [Environment] セクションを参照します。
  6. Web サーバを再起動します。phpinfo() 出力で sqlanywhere を検索することにより、SQL Anywhere 用拡張モジュールの状況を確認することができます。

Linux、Mac OS X、Solaris での PHP モジュールのインストール

  1. PHP 構成ファイル (php.ini) を探します。php.ini を探す最も良い方法は、phpinfo() 出力で php.ini または[Loaded Configuration File] を探すことです。コマンド・ラインから PHP を使用する場合と、Apache 内で PHP を使用する場合とでは、ファイルの場所が異なる場合があります。
  2. テキスト・エディタでphp.ini を開き、extension_dir を探します。extension_dir は、PHP 拡張モジュールがコピーされるファイル・システム上のディレクトリを指定します。extension_dir にディレクトリが設定されていない場合、PHP インストール環境にextensions という名前の新しいサブディレクトリを作成してから、php.ini を編集してextensions_dir に新しいディレクトリの完全修飾名を設定します。
  3. SQL Anywhere 用 PHP 拡張モジュールをダウンロードして展開します。php-5.x.y_sqlanywhere_r.so という名前のファイルを取得してください。php.ini ファイルのextension_dir エントリで指定したディレクトリにファイルをコピーします。
  4. PHP の起動時に必ず SQL Anywhere 用 PHP 拡張モジュールが自動的にロードされるようにするには、php.ini ファイルの [Dynamic Extensions] セクションに以下の 1 行を追加します。extension=php-5.x.y_sqlanywhere_r.so
  5. SQL Anywhere 用 PHP 拡張モジュールが SQL Anywhere インストール環境内にあるライブラリを使用できるように、使用している環境を変更します。このとき、SQL Anywhere インストール環境のlib32 または lib64 サブディレクトリを LD_LIBRARY_PATH に指定する必要があります。LD_LIBRARY_PATH は Apache インストール環境内にあるenvvars ファイルを変更することで変更できます。LD_LIBRARY_PATH を確認するには、phpinfo() 出力の [Environment] セクションを参照します。たとえば、以下のような行をenvvars に追加します (sh、ksh、または bash を使用)。LD_LIBRARY_PATH=”/opt/sqlanywhere11/lib32:$LD_LIBRARY_PATH” export
    LD_LIBRARY_PATH
  6. Web サーバを再起動します。phpinfo() 出力で sqlanywhere を検索することにより、SQL Anywhere 用拡張モジュールの状況を確認することができます。

SQL Anywhere で PHP を試す

SQL Anywhere 用 PHP 拡張モジュールが稼働したら、SQL Anywhere を使用する PHP スクリプトを試します。これを行うには、まず SQL Anywhere データベースを作成し、SQL Anywhere を稼働させる必要があります。コマンド・プロンプトを開き、現在のディレクトリを SQL Anywhere データベース・ファイルの作成場所に移動します。移動が完了したら、dbinit を使用してデータベースを作成し、dbsrv11 を使用して SQL Anywhere サーバを起動します。

Windowsのコマンド・ラインから起動する例:

“\Program Files\SQL Anywhere 11\Bin32\dbinit” hits.db “\Program Files\SQL Anywhere 11\Bin32\dbsrv11” hits.db

非Windowsプラットホームの上のコマンド・ラインから起動する例:

/opt/sqlanywhere/bin32s/dbinit hits.db /opt/sqlanywhere/bin32s/dbsrv11 hits.db

データベースの作成とサーバの起動は、Sybase Central (グラフィカル・ツール) でも行うことができます。詳細については製品マニュアルを参照してください。サーバは、サービスまたはデーモンとしてバックグラウンドで稼働することもできますが、コマンド・ラインから稼働させた場合は簡単に起動されます。

データベースの作成とサーバの起動は、Sybase Central (グラフィカル・ツール) でも行うことができます。詳細については製品マニュアルを参照してください。サーバは、サービスまたはデーモンとしてバックグラウンドで稼働することもできますが、コマンド・ラインから稼働させた場合は簡単に起動されます。

ローカル Web サイトのルート・ディレクトリに、hits.php という名前の PHP ファイルを作成します。新しいファイルの内容として、以下のスクリプトをコピー・アンド・ペーストします。

<html>
<body>
<p>Record page hits</p>
<?php
$conn = sasql_connect(“uid=dba;pwd=sql”);
sasql_query($conn,
“CREATE TABLE IF NOT EXISTS hits (hit TIMESTAMP)”);
sasql_query($conn,
“INSERT INTO hits VALUES(now(*))”);
$result = sasql_query($conn,
“SELECT TOP 10 hit FROM hits ORDER BY hit DESC”);
if ($result) {
echo “<table border=’1′>\n”;
while ($obj = sasql_fetch_object($result)) {
echo “<tr>\n”;
echo “<td>$obj->hit</td>\n”;
echo “</tr>\n”;
}
sasql_free_result($result);
echo “</table>\n”;
}
sasql_close($conn);
?>
</body></html>

ブラウザで http://localhost/hits.php を表示することにより、このスクリプトを実行します。このとき、Web サーバが稼働している必要があります。スクリプトの初回の実行時には、hits というテーブルが作成され、そのテーブルにローが 1 つ挿入されます。スクリプトの 2 回目以降の実行時には、テーブルに新しいローが挿入され、直前の 10 個のローが表示される HTML ページが出力されます。

トラブルシューティング

当社の掲示板をご利用ください。

Web サーバを再起動してみてください。構成を変更したにもかかわらずその効果が現れない場合、サーバを再起動すると効果が現れる可能性があります。

ブラウザを再起動してみてください。ブラウザが古い情報をキャッシュしている場合があります。

phpinfo() 出力の情報を再確認してください。PHP スクリプトが機能しない理由を特定しづらい場合、この情報が役立つ可能性があります。

  • パスで SQL Anywhere 用の環境を確認します (PATH またはLD_LIBRARY_PATH)。
  • ロードされた構成ファイル (php.ini) の場所を確認します。コマンド・ラインから PHP を実行すると、このファイルが別の場所にある可能性があります。
  • Web サイト・ファイルの場所を確認します(DOCUMENT_ROOT)。
  • SQL Anywhere 用 PHP 拡張モジュールの状況を確認します (sqlanywhere)。

PHP インストール環境内に、php.ini と類似するファイルが複数ある場合があります。変更中のファイルが phpinfo() にリストされている php.ini ファイルであることを確認してください。

PHP にはエラー・ログがあり、php.ini 内で error_log 命令を使用して構成することができます。また、error_reporting 命令を使用して、エラー・レポート・レベルを構成することもできます。

コマンド・ラインから PHP を実行してみてください。SQL Anywhere 用拡張モジュールが Web サーバ内で機能しない場合、その理由の特定に役立つ場合があります。