我在从PHP 7.4.5连接到SQL Anywhere 17时遇到了一个非常令人沮丧得问题.操作系统是CentOS 7.9.我安装了SQL Anywhere客户端v17.没有Apache或Web服务器,PHP仅处于命令行模式!
我将显式加载SQL Anywhere得64位扩展.libdbcapi.so还将加载“www.example.com.“扩展.
我的连接字符串如下:
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host=".$server.";Port=".$port.")";
我正在做以下事情:
<?php
$server = "192.168.56.105";
$port = "2638";
$username = "username";
$password = "********";
if( ! extension_loaded('sqlanywhere') ){
print("SQL ANYWHRE not available.\n");
} else {
print("SQL ANYWHERE extension loaded.\n");
}
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host=".$server.";Port=".$port.")";
echo "Connecting to SQL Anywhere with: '$connString'\n";
$conn = sasql_connect($connString);
if(!$conn){
echo "Error connecting.";
} else {
echo "Connected.";
sasql_disconnect($conn);
}
?>
但我一直收到以下错误:
PHP警告:sasql连接():SQLAnywhere语言:[-832]连接错误:第XX行上的/root/scripts/bcliqx/companies_pull. php中的TCPIP端口选项出错
我试过了
$connString = "Uid=".$username.";Pwd=".$password.";Server=".$serverName.";host=".$server.":".$port.")";
$connString = "Uid=".$username.";Pwd=".$password.";host=".$server.":".$port.")";
$connString = "Uid=".$username.";Pwd=".$password.";host=".$server.";port=".$port;
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host=".$server.":".$port.")";
$connString = "Uid=".$username.";Pwd=".$password.";CommLinks=tcpip(host=".$server.";Port=".$port.")";
而且我一直收到上面的错误或这个错误:
PHP警告:sasql连接():SQLAnywhere语言:[-95]分析错误:第XX行上的/root/scripts/bcliqx/companies_pull. php中的“host”附近的关键字无效或缺失
实际的用户名和密码仅包含字母数字字符A-Za-z 0 -9,并且不太长(分别为8个字符和12个字符)。
我正在迅速失去理智。我做错了什么??服务器就在那里。如果我使用不同的工具打开服务器&端口,它会回答,所以连接不是问题。
编辑:想要补充的是,问题发生在干净安装的CentOS 7. 9服务器以及较旧的服务器上。
2条答案
按热度按时间4si2a6ki1#
PHP模块所需的命令行工具包含一个名为dbping的命令行工具。
3j86kqsm2#
解决方案来自一位以前的同事,他建议我将字符串更改为以下内容:
这是可行的。但这不是:
第二个选项适用于不包含.""的SERVERNAME,例如,$server =“sa 17 svr”适用,但$server=”sa17svr.domain.com“不适用。