我該如何密碼加密從PHP到Sybase ASE的數據庫服務器連接?當需要密碼加密時,爲什麼到ASE的連接失敗?
當net password encryption reqd = 1
時,到ASE的PHP連接失敗。
我們如何使用密碼加密來建立與ASE的PHP數據庫連接?是否有我們需要在客戶端連接上設置的PHP關鍵字或參數?
我該如何密碼加密從PHP到Sybase ASE的數據庫服務器連接?當需要密碼加密時,爲什麼到ASE的連接失敗?
當net password encryption reqd = 1
時,到ASE的PHP連接失敗。
我們如何使用密碼加密來建立與ASE的PHP數據庫連接?是否有我們需要在客戶端連接上設置的PHP關鍵字或參數?
下面是從Linux版本5.3.6的Linux 64位基本機器和Sybase CTISQL Utility/15.7/P-EBF19975 ESD #3/DRV.15.7.0.3
的Sybase驅動程序連接的問題的解決方案。雖然我們得到了這個工作,但除此之外,我們還需要讓Apache工作,但我希望Sybase的支持能夠幫助我們解決問題,並解決以下問題。我在這裏張貼這個給大家的好處。注意:AFAICT,這不是Sybase支持的解決方案。請將其用作您自己的風險。
幾件事情需要發生這個工作:
步驟1)我認爲應該很容易地設置它。請確保您有sudo訪問
步驟2)要安裝您需要鍵入整個路徑到setup.bin文件是找到像這樣鍵入須藤的/ home/BTRAN/ebf19977 /設置開發工具包。 bin,這將開始設置,幾乎按照指示安裝OpenClient及其相關工具。確保安裝了Open Client和PHP庫。
一旦你完成了安裝有一些其他的步驟做:
設置所有Sybase通過爲/ opt/SYBASE根目錄執行SYBASE.sh
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 /型材應該是這個樣子:
# ------------------------------------
# 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
您還需要做出修改的ocs.cfg讓PHP正確啓動,這所在的文件夾中/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從源頭上,又一次爲64位調用Sybase。
我下載的源代碼爲/opt/php-5.3.6
,以便在大多數Linux應用程序安裝位置保持不變。
cd to /opt/php-5.3.6
./configure
非常重要要注意,這是我們遇到了一個障礙,如果我選擇的任何其他配置選項,而不是默認的./configure,PHP將失敗,並提示以下錯誤:加載:
[email protected]:/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,但是我們需要能夠從網站啓動PHP,所以依賴關係是PHP除了支持Sybase外,還需要支持Apache。如果任何PHP專家有解決這個問題,請跳進來幫助我們。
我一直從PHP使用Sybase多年,但我從來沒有看到任何方式來做你所要求的 –
我已經在這裏跑到這張貼http://ccit.college.columbia.edu/knowledgebase/文章/ setting-sybase-ct-with-encrypted-password-connections-linux-using-ase-15.php並且可能是一個可能的解決方案 – btran
這就是Sybase支持所說的。你可以通過使用ocs來解決這個問題.cfg文件。 在您的$ SYBASE/OCS-15_0/config目錄中是一個sample.cfg文件。 第六爲sample.cfg文件,該行添加到默認節 [DEFAULT] CS_SEC_ENCRYPTION = CS_TRUE 這可能會實現。 如果應用程序傳遞一個名字,你會創建一個新的部分 [應用程序名稱] CS_SEC_ENCRYPTION = CS_TRUE Sybase的人也說,你應該至少使用的Sybase版本15.7。 – btran