ホームページ >バックエンド開発 >PHPチュートリアル >【ubuntu14.04】PHP5+Apache2+Oracle環境構築

【ubuntu14.04】PHP5+Apache2+Oracle環境構築

WBOY
WBOYオリジナル
2016-06-23 13:39:281368ブラウズ

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 バージョン: 5.5.9-1ubuntu4.6


PHP には、インストール時に Oracle データベース管理拡張機能が付属していないため、自分でダウンロード、コンパイル、インストール、構成する必要があります。

ここでは主に次の記事を参照します:

https://help.ubuntu.com/community/PHPOracle
http://blog.sina.com.cn/s/blog_8f4fbe030100y5q3.html


インターネット上には関連するチュートリアルが多数あり、主に 2 つのカテゴリに分類されますが、主なアイデアは次のとおりです:

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. 解凍してライブラリ ファイルへのソフト リンクを作成します。この手順は非常に重要です。適切に処理しないと、次のコンパイル手順が失敗します。

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 拡張機能は正常にコンパイルされています。次のステップは、それを使用環境に割り当てることです。


5. PHPの設定

拡張機能を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

が有効

OCI8 DTrace サポート OCI8 バージョン リビジョン Oracle ランタイム クライアント ライブラリ バージョンOracle コンパイル時インスタント クライアント バージョン

次の情報が出力された場合、構成が成功したことを意味します。


以下はデバッグ リンクです:

1. コンパイル プロセスが表示されます:

configure: 警告: PHP パーサーを再生成したい場合は、re2c 0.13.4 以降が必要です。
以下のように解決してください。記事:

http://blog.slogra.com/post-421.html


2. コンパイルプロセス中に、ライブラリファイルが見つかりません:

configure: error: Oracle Instant Clientライブラリ libnnz.so および libclntsh.so が見つかりません

コマンド ラインを使用してソフト リンクを作成したかどうかを確認してください


3.Oracle Instant Client SDK ヘッダー ディレクトリを確認しています... 構成: エラー: Oracle Instant Client SDK ヘッダー ファイル見つかりません

SDK フォルダーは instantclient ディレクトリーにありますか。


4.エラー: `/tmp/pear/temp/oci8/configure --with-oci8=instantclient,/usr/local/lib/instantclient' が失敗しました

--with-oci8 の後に続くのはパスです最後にコピーしたディレクトリでなければなりません。



他の問題が発生した場合は、コメントを残して連絡してください。


無効
2.0.8
$Id: f04114d4d67cffe a4cdc2ed3b7f0229c2caa5016 $
12.1。 0
12.1
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。