centos PHP SQL Anywhere连接错误

xyhw6mcr  于 2022-11-07  发布在  PHP
关注(0)|答案(2)|浏览(115)

我在从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服务器以及较旧的服务器上。

4si2a6ki

4si2a6ki1#

PHP模块所需的命令行工具包含一个名为dbping的命令行工具。

3j86kqsm

3j86kqsm2#

解决方案来自一位以前的同事,他建议我将字符串更改为以下内容:

$connString = "UID=".$username.";PWD=".$password.";ENG=IQX;LINKS=tcpip(HOST=$server;DoBroadcast=NONE;PORT=$port)";

这是可行的。但这不是:

$connString = "UID=".$username.";PWD=".$password.";ENG=IQX;LINKS=tcpip(HOST=".$server.";DoBroadcast=NONE;PORT=$port)";

第二个选项适用于不包含.""的SERVERNAME,例如,$server =“sa 17 svr”适用,但$server=”sa17svr.domain.com“不适用。

相关问题