PHP用Oracleのインストール

提供:MoodleDocs
移動先:案内検索


Oracle Express EditionでWindowsにMoodleをインストールする

はじめに

ここでは、WindowsにOracle Express Editionを搭載したMoodleをインストールする方法を説明します。私は、デバッグ 目的で使用しています。本番環境ではありません。目標は、簡単かつ迅速にMoodle/Windows/Oracle環境をセットアップすることです。

Oracleのインストール

  1. Oracle Express Editionは、Oracle社のWebサイトからダウンロードしてください。
  2. また、インスタントクライアントコチラが必要です。(無料アカウント登録が必要です)。解凍されたフォルダからすべてをapache/binにコピーします。
  3. 両方をインストールします。
  4. http://127.0.0.1:8080/apex の Oracle コンソールにアクセスします (Login=SYS Password=the_one_you_entered_during_the_installation)。
  5. 新しいユーザを作成し、すべての権利(DBAを含む)を与えます。
  6. SQL Commands ページに移動し、新しいユーザに dmbs_lock 権限を付与します...

grant execute on dbms_lock to XXXXX; ...ここで、XXXXXは新しいユーザのユーザ名です。

  1. ログアウトして、新しいユーザでログインします。
  2. Moodleコードベースの/lib/dml/oci_native_moodle_package.sqlにあるスクリプトを実行してください。このスクリプトを直接実行できない場合、SQLコマンドページで各パーツ(スラッシュで区切られた部分)を個別に実行することができます。

注: Oracle Express Edition 10gは、'XE' と呼ばれる1つのデータベースに限定されています。

Oracleの拡張機能を設定する

このドキュメントでは、Oracle用のapache/phpのセットアップ方法については説明しません。詳しくは、Oracle社のドキュメントをご覧ください。

phi.ini ファイルを編集し、php_oci8 拡張子のコメントを解除(先頭のセミコロンを削除)してください。WAMPセットアップでは、これは以下としてリストされています...

extension=php_oci8.dll

また、開発/テスト目的でインストールを使用する場合は、以下の行のコメントを解除し、値をゼロに設定してください。通常の運用では必要ありません(システムのBIGスローダウンを引き起こします!)。

oci8.statement_cache_size = 0

また、php_oracle, php_pdo_oci, php_pdo_oci8 のコメントアウトを解除する必要がある場合があります。

Moodleのインストール

データベースの設定ページ:
Driver: Oracle oci8 (1.9.x をインストールした場合は "oci8po" を、2.0.x をインストールした場合は "oci" を設定ファイルに記述する必要があります。)
Host: 空のフィールド
Database: //localhost:1521/XE
User: あなたが作成したユーザ
Password: ユーザに与えたパスワード

Apacheの設定

あなたがOracle上でMoodleをLinux上のApacheで動作させている場合、PHPがシステム環境変数を参照することができないという問題が発生する可能性があります。 これを解決するには、/etc/sysconfig/apache2を編集して、以下の行を一番下に追加してください:

LD_LIBRARY_PATH=/opt/oracle/instantclient_11_2# Set LANG Variables for UTF-8
NLS_LANG=AMERICAN_AMERICA.AL32UTF8
LANG=en_US.UTF-8
LC_ALL=en_US.UTF-8
LC_COLLATE=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_MESSAGES=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
NLS_NUMERIC_CHARACTERS='.,'

export LANG LC_ALL LC_COLLATE LC_CTYPE LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIM NLS_LANG LD_LIBRARY_PATH NLS_NUMERIC_CHARACTERS

また、この2行を ~/.bashrc に追加して、PHP のコマンドラインクライアントにも表示できるようにする必要があります。

UbuntuへのOracle Expressのインストール

私は、MoodleでOracleのインストールをテストする必要があり、以下のようにしました。

  • Ubuntu 14.04.1 LTS 64 bit
  • Oracle 11g Release 2 Express Edition
  • SQL Developer 4.0.3.16

Oracle Express と SQL Developer

他のサイトはすべて無視して、以下の指示に従います - http://blog.whitehorses.nl/2014/03/18/installing-java-oracle-11g-r2-express-edition-and-sql-developer-on-ubuntu-64-bit/

ただし、この作業をする前にChromeからログアウトしてください。Chromeが同じフォルダを使用しているため、即座にクラッシュしてしまいます。

sudo rm -rf /dev/shm
sudo mkdir /dev/shm
sudo mount -t tmpfs shmfs -o size=4096m /dev/shm

また、4096mをお使いのメモリの半分に変更してください。

sqldeveloper を実行するときに致命的なエラーが発生する場合は、次のようにしてください。

gksudo gedit /opt/sqldeveloper/sqldeveloper/bin/sqldeveloper

をクリックし、次の2行を一番上に追加してください。

unset GNOME_DESKTOP_SESSION_ID
unset DBUS_SESSION_BUS_ADDRESS

答えはこちらにあります http://linuxsagas.digitaleagle.net/2014/01/28/fixing-sql-developer-4-0/

インストール後、接続を作成する際、デフォルトのユーザ名はSYSTEMで、sudo /etc/init.d/oracle-xe configure の手順で作成したパスワードを使用します。

gnome classicでは - OracleのメニューはOther、sqldeveloperはProgrammingの下にあります。

ユーザの作成

Application expressの利用が一番簡単かもしれません:

  • Applications -> Other menu(gnome)またはインストール時に作成されたデスクトップアイコンから、"Get Started With Oracle Database 11g Express Edition" にアクセスしてください。
  • ブラウザにページが表示されます
  • SYSTEMとしてログインします
  • Application expressのタブをクリックします
  • ユーザ名とパスワードを作成します
  • SQL Developer(Gnome classicでは、applications -> programming -> sqldeveloper) で、新しく作成したユーザを使って接続を作成し、開きます。

PHP

以下の手順に従ってください - https://help.ubuntu.com/community/PHPOracle

etc/php5/apache2/php.ini と /etc/php5/cli/php.ini の両方に extension=oci8.so を追加すると、クライアントの php cron が動作しなくなります。

Apache2を再起動します

次に、これでテストしてください

<?php

error_reporting( -1 );
ini_set( 'display_errors', 1 );

$conn = oci_connect('USERNAME', 'password', 'localhost/XE');
if (!$conn) {
    $e = oci_error();
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// ステートメントの作成
$sql = "SELECT * FROM atable"; // Change this.
$stid = oci_parse($conn, $sql);
if (!$stid) {
    $e = oci_error($conn);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// クエリのロジックを実行
$r = oci_execute($stid);
if (!$r) {
    $e = oci_error($stid);
    trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

// クエリの結果を取得
print "<table border='1'>\n";
while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) {
    print "<tr>\n";
    foreach ($row as $item) {
        print "    <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : " ") . "</td>\n";
    }
    print "</tr>\n";
}
print "</table>\n";

oci_free_statement($stid);
oci_close($conn);

関連リンク