RT
最近開発されたプロジェクトで、データベースは oracle を使用しています。 Oracle 自体は Red Hat をサポートしていますが、Ubuntu へのサポートは良くありません。Ubuntu に Oracle をインストールする必要がある場合、システム自体が偽装などの多くの作業を行う必要があるため、リモート サーバー上の Oracle データベースのみを使用する予定です。
ローカル環境:
Linux xxx-ThinkPad-T400 3.13.0-46-generic #75-Ubuntu SMP Tue Feb 10 15:24:04 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
PHP には、インストール時に Oracle データベース管理拡張機能が付属していないため、自分でダウンロード、コンパイル、インストール、構成する必要があります。
ここでは主に次の記事を参照します:
https://help.ubuntu.com/community/PHPOracle
http://blog.sina.com.cn/s/blog_8f4fbe030100y5q3.html
1. instantclient をダウンロードします。 Oracle 公式 Web サイトの SDK インストール パッケージからの Basic および instantclient
2. ライブラリ ファイルへのソフト リンクを作成します3. PHP を設定します
違いは次のとおりです。 php oci8.so ファイルを直接ダウンロードし、コンパイルと同時に手動で解凍する方法もあります。または、上で参照したチュートリアルで説明されているように、pear コマンドを直接使用してダウンロードし、自動的にコンパイルする方法もあります。
重要なのは、チュートリアルに従うと多くの予期せぬ問題が発生するということです。次に、最初に私が成功した構成プロセスに従ってチュートリアルを作成し、次に遭遇した問題とその解決策を説明します。依存関係の問題を解決します。
sudo apt-get updatesudo apt-get upgrade
sudo apt-get install php5-dev build-essential php-pear libaio1
sudo apt-get install unzip make
2. Oracle 公式 Web サイトから Instant Client をダウンロードします
http://www.oracle.com/technetwork/database/features/instant-client/index-097480.html独自のシステムに従って対応するリストを入力し、対応する instantclient-basic-xxx をダウンロードします。 zip と instantclient-sdk-xxx.zip 。
3.1 ファイルを解凍し、2 つのフォルダーからバージョン番号を削除します。つまり、instantclient と sdk は、sdk フォルダー全体を instantclient ディレクトリに移動し、他のライブラリ ファイルと共存させます。インターネット上の他のチュートリアルのほとんどは、これら 2 つのフォルダー間のストレージ関係を説明していないか、同じディレクトリに直接配置しているため、後続のコンパイル プロセス中に SDK が見つからないというプロンプトが表示されます。ここで、sdk フォルダーを instantclient ディレクトリに移動する必要があります。インターネット上の他のチュートリアルを参照することはできません。
3.2 ライブラリ ファイルへのソフト リンクを作成します。右クリックしてライブラリ ファイルへのリンクを生成することはできないことに注意してください:
ln -s libnnz12(version number).so libnnz.so上記のように、元のライブラリ ファイルのバージョン情報を削除して、拡張ライブラリを生成します。バージョン情報のないファイル リンク
同時に、
ln -s libclntsh.so.12.1 libclntsh.so
ln ?s libocci.so.12.1 libocci.so
を生成する必要があります。この手順を完了したら、Oracle instantclient フォルダー全体を事前に設定した場所に移動できます。
/usr/local/lib/ディレクトリ全体 コピーが完了したら、ディレクトリの権限を昇格します:
sudo chmod 777 -R /usr/local/lib/instantclient/次に必要になる可能性のあるいくつかのシステム定数を設定します:
sudo vim /etc/environmentファイルの最後に次の定数を追加します。
# Oracle Instant ClientLD_LIBRARY_PATH="/usr/local/lib/instantclient"TNS_ADMIN="/usr/local/lib/instantclient"ORACLE_BASE="/usr/local/lib/instantclient"ORACLE_HOME=$ORACLE_BASE
4 .oci8.so
sudo pecl install oci8をダウンロードしてコンパイルします その後、oci8 のソース コード パッケージが自動的にダウンロードされ、自動的にコンパイルされます。その後、プロセス中に instantclient の関連するパス変数を入力するように求められます:
と入力します。
instantclient,/usr/local/lib/instantclient
次に、システムのコンパイルが完了すると、プロンプトが表示されます:
Build process completed successfullyInstalling '/usr/lib/php5/20121212/oci8.so'install ok: channel://pecl.php.net/oci8-2.0.8configuration option "php_ini" is not set to php.ini locationYou should add "extension=oci8.so" to php.ini同様のプロンプトがない場合は、おめでとうございます。このプロセスでエラーが発生しているはずです。これまでのところすべてが順調に進んでいると仮定しましょう。これまでのところ、oci8.so 拡張機能は正常にコンパイルされています。次のステップは、それを使用環境に割り当てることです。
拡張機能をphp.iniで直接開くこともできますが、現時点ではPHPでは推奨されていないため、次のようにします。 私のサーバーはubuntu+apacheなので、操作方法は次のとおりです。 :
/etc/php5/apache2/conf.d に新しい oci8.ini ファイルを作成します。apache2/conf.d ディレクトリでは、すべてのプラグインの前に番号が付いていることがわかります。ここでは気にする必要はありません。無視してください:
sudo vim /etc/php5/apache2/conf.d/oci8.ini次に、oci8.so を開くステートメントをファイルに追加し、
extension=oci8.soして Apache を再起動します
sudo /etc/init.d/apache2 restart
再起動が完了したら、新しいテストを作成します。 php ファイルをサーバーのルート ディレクトリに配置し、次のように記述します:
PHP ページに次のコンテンツが表示されるかどうかを確認します:
OCI8
OCI8 Support
が有効
無効 | |
2.0.8 | |
$Id: f04114d4d67cffe a4cdc2ed3b7f0229c2caa5016 $ | |
12.1。 0 | |
12.1 |