Php 当需要密码加密时,为什么与ASE的连接失败?
如何对从PHP到Sybase ASE的数据库服务器连接进行密码加密 当Php 当需要密码加密时,为什么与ASE的连接失败?,php,sap-ase,Php,Sap Ase,如何对从PHP到Sybase ASE的数据库服务器连接进行密码加密 当net password encryption reqd=1时,与ASE的PHP连接失败 如何使用密码加密将PHP DB连接到ASE?是否需要在客户端连接上设置PHP关键字或参数?下面是一个解决此问题的方法,它可以从Linux 64位基本机器(PHP版本为5.3.6)和Sybase CTISQL实用程序/15.7/p-EBF19975 ESD#3/DRV.15.7.0.3中的Sybase驱动程序进行连接。虽然我们要让它工作,但
net password encryption reqd=1
时,与ASE的PHP连接失败
如何使用密码加密将PHP DB连接到ASE?是否需要在客户端连接上设置PHP关键字或参数?下面是一个解决此问题的方法,它可以从Linux 64位基本机器(PHP版本为5.3.6)和Sybase CTISQL
实用程序/15.7/p-EBF19975 ESD#3/DRV.15.7.0.3
中的Sybase驱动程序进行连接。虽然我们要让它工作,但我们还需要让Apache工作。除此之外,我希望Sybase支持能够帮助我们解决这一问题,就像他们为我们的问题提供下面的解决方案一样。我把这个贴在这里是为了大家的利益。注意:AFAICT,这不是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
# ------------------------------------
;;;;;;;;;;;
; 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
;;;;;;;;;
extension=/opt/sybase/OCS-15_0/php/php536_64/lib/sybaseasephp.so
然后,您还需要修改位于根目录/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
中,如下所示:
# ------------------------------------
# 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
# ------------------------------------
;;;;;;;;;;;
; 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
;;;;;;;;;
extension=/opt/sybase/OCS-15_0/php/php536_64/lib/sybaseasephp.so
注意:检查同一目录中是否存在php.ini文件也是非常关键的/opt/sybase/OCS-15_0/config
(指向exention文件,请查看环境变量LD_LIBRARY_PATH=“/opt/sybase/OCS-15_0/php/php536_64/lib
)
您的php.ini应该如下所示:
# ------------------------------------
# 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
# ------------------------------------
;;;;;;;;;;;
; 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
;;;;;;;;;
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,但我们需要能够从网站启动PHP,因此依赖项是PHP除了支持Sybase外,还需要支持Apache。如果有任何PHP专家对此有解决方案,请加入并帮助我们。我一直在使用Sy多年来,我一直没有看到任何方法可以满足您的要求。我在这里遇到了这篇帖子,可能是一个可能的解决方案。Sybase支持人员说这是一个可能的解决方案。您可以通过使用ocs.cfg文件来解决这个问题。在$Sybase/ocs-15_0/config目录中,是一个sample.cfg文件。vi sample.cfg文件是一个d将此行添加到默认节[Default]CS_SEC_ENCRYPTION=CS_TRUE这可能会起作用。如果应用程序正在传递名称,您将创建一个新节[application name]CS_SEC_ENCRYPTION=CS_TRUE Sybase人员还说,您应该至少使用Sybase版本15.7。我建议您重复您所写的完整答案,您可能会得到一些应得的积分,您的答案将更容易被具有相同问题的人访问。回答自己的问题是可以的,只要是不是收集信用点的把戏。对不起,不是信用点,而是信誉点(或投票)