2012-06-21 20 views
1

我該如何密碼加密從PHP到Sybase ASE的數據庫服務器連接?當需要密碼加密時,爲什麼到ASE的連接失敗?

net password encryption reqd = 1時,到ASE的PHP連接失敗。

我們如何使用密碼加密來建立與ASE的PHP數據庫連接?是否有我們需要在客戶端連接上設置的PHP關鍵字或參數?

+0

我一直從PHP使用Sybase多年,但我從來沒有看到任何方式來做你所要求的 –

+0

我已經在這裏跑到這張貼http://ccit.college.columbia.edu/knowledgebase/文章/ setting-sybase-ct-with-encrypted-password-connections-linux-using-ase-15.php並且可能是一個可能的解決方案 – btran

+0

這就是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

回答

2

下面是從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. 我已經使用了最新的Debian穩定6.05擠64位
  2. 我已經安裝ebf19977(開發工具包與開放的客戶端,是數關閉,這不是一個錯誤,你會看到當你安裝它)從Sybase下載
  3. 從php.net網站下載PHP 5.3.6從源代碼編譯。

步驟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專家有解決這個問題,請跳進來幫助我們。

相關問題