PHP から Sybase ASE へのデータベース サーバー接続をパスワードで暗号化するにはどうすればよいですか?
ASE への PHP 接続は、次の場合に失敗しnet password encryption reqd = 1
ます。
パスワード暗号化を使用して ASE への PHP DB 接続を確立するにはどうすればよいですか? クライアント側接続で設定する必要がある PHP キーワードまたはパラメーターはありますか?
以下は、PHP バージョン 5.3.6 および Sybase CTISQL からの Sybase ドライバーを使用して Linux 64 ビット ベース マシンから接続できるという点で、この問題の解決策ですUtility/15.7/P-EBF19975 ESD #3/DRV.15.7.0.3
。これを機能させるには、これに加えてApacheを機能させる必要があります. みんなの利益のためにここに投稿しています。注: AFAICT、これは Sybase がサポートするソリューションではありません。自己責任でご利用ください。
これが機能するために必要なことはほとんどありません。
ステップ 1) これは簡単に設定できると思います。sudo アクセス権があることを確認してください
ステップ 2) 開発者キットをインストールするには、setup.bin ファイルがある場所へのパス全体を入力する必要があるので、 sudo /home/btran/ebf19977/setup.bin と入力すると、セットアップが開始されます。ほぼ指示に従います。そこに OpenClient とその関連ツールをインストールします。Open Client と PHP ライブラリがインストールされていることを確認します。
インストールが完了したら、他にいくつかの手順を実行する必要があります。
/opt/sybase のルート ディレクトリにある SYBASE.sh を実行して、すべての Sybase 環境変数を設定します。
sudo cat /opt/sybase/SYBASE.sh >> /etc/profile , if necessary source /etc/profile
これでほとんどの変数が設定されますが、そこにないいくつかの変数を追加する必要があります。
PHPRC=/opt/sybase/OCS-15_0/config
LD_LIBRARY_PATH=/opt/sybase/OCS-15_0/php/php536_64/lib:/opt/sybase/OCS-15_0/lib
/ect/profile は次のようになります。
# ------------------------------------
# Sybase Product Environment variables
# ------------------------------------
SYBASE="/opt/sybase"
export SYBASE
SYBASE_OCS="OCS-15_0"
export SYBASE_OCS
INCLUDE="/opt/sybase/OCS-15_0/include":$INCLUDE
export INCLUDE
LIB="/opt/sybase/OCS-15_0/lib":$LIB
export LIB
PATH="/opt/sybase/OCS-15_0/bin":$PATH
export PATH
LD_LIBRARY_PATH="/opt/sybase/OCS-15_0/php/php536_64/lib:/opt/sybase/OCS-15_0/lib:/opt/sybase/OCS-15_0/lib3p64:/opt/sybase/OCS-15_0/lib3p":$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
PHPRC="/opt/sybase/OCS-15_0/config"
export PHPRC
JAVA_HOME="/opt/sybase/jre32"
export JAVA_HOME
RIBO_HOME="/opt/sybase/jutils-3_0/ribo"
export RIBO_HOME
# ------------------------------------
次に、ルート ディレクトリ /opt/sybase にあるインターフェイス ファイルを次のように変更する必要があります。これは使用せず、あなたの情報を使用してください。
dev
master tcp ether dev.company.com 4425
query tcp ether dev.company.com 4425
prod
master tcp ether prod.company.com 4425
query tcp ether prod.company.com 4425
ribo
master tcp ether testhost.company.com 5005
query tcp ether testhost.company.com 5005
また、PHP が正しく開始されるように ocs.cfg を変更する必要があります。これは、次の/opt/sybase/OCS-15_0/config
ようなフォルダーにあります。
;;;;;;;;;;;
; This is the default external configuration definition file. Feel free
; to add your own customizations.
;
[DEFAULT]
; This is the default section loaded by applications that use
CS_SEC_ENCRYPTION = CS_TRUE
[ANSI_ESQL]
; This section defines configuration which an ANSI conforming
CS_CAP_RESPONSE = CS_RES_NOSTRIPBLANKS
CS_EXTRA_INF = CS_TRUE
CS_ANSI_BINDS = CS_TRUE
CS_OPT_ANSINULL = CS_TRUE
CS_OPT_ANSIPERM = CS_TRUE
CS_OPT_STR_RTRUNC = CS_TRUE
CS_OPT_ARITHABORT = CS_FALSE
CS_OPT_TRUNCIGNORE = CS_TRUE
CS_OPT_ARITHIGNORE = CS_FALSE
CS_OPT_ISOLATION = CS_OPT_LEVEL3
CS_OPT_CHAINXACTS = CS_TRUE
CS_OPT_CURCLOSEONXACT = CS_TRUE
CS_OPT_QUOTED_IDENT = CS_TRUE
; End of default sections
[isql]
CS_SEC_ENCRYPTION = CS_TRUE
[PHP]
CS_SEC_ENCRYPTION = CS_TRUE
; This is a sample section showing how you might alter configuration
; properties for you Embedded SQL application.
[SAMPLE_ESQL]
; use most of the ANSI properties defined above
include = ANSI_ESQL
; but override some default properties
CS_OPT_CHAINXACTS = CS_FALSE ; run in autocommit mode
;;;;;;;;;
注:同じディレクトリにphp.iniファイルが存在することも確認することが非常に重要です/opt/sybase/OCS-15_0/config
(これはexentionファイルを指しています。環境変数を見てくださいLD_LIBRARY_PATH="/opt/sybase/OCS-15_0/php/php536_64/lib
)
php.ini は次のように読む必要があります。
extension=/opt/sybase/OCS-15_0/php/php536_64/lib/sybaseasephp.so
ステップ 3) PHP をソースからコンパイルします。Sybase は 64 ビットを呼び出します。
/opt/php-5.3.6
Linux のほとんどのアプリがインストールされる場所で永続化するために、ソースをダウンロードします。
cd to /opt/php-5.3.6
./configure
非常に重要なことですが、ここで問題が発生しました。デフォルトの ./configure ではなく、他の構成オプションを選択すると、PHP は以下のエラーでロードに失敗します。
btran@sls-baonix:/opt/php-5.3.6$ php ~/test-dev.php
PHP Warning: PHP Startup: Unable to load dynamic library
'/opt/sybase/OCS-15_0/php/php536_64/lib/sybaseasephp.so' -
/opt/sybase/OCS-15_0/php/php536_64/lib/sybaseasephp.so: undefined
symbol: executor_globals in Unknown on line 0
Fatal error: Call to undefined function sybase_connect() in
/home/btran/test-dev.php on line 10
]
他のオプションが必要な理由は、Apache と連携するためにも必要だからです。PHP で動作するようになりましたが、Web サイトから PHP を開始できるようにする必要があるため、PHP は Sybase をサポートするだけでなく、Apache もサポートする必要があります。PHP の専門家がこれに対する解決策を持っている場合は、飛び込んで助けてください。