如何通过 PHP 连接到 Sybase
Posted
技术标签:
【中文标题】如何通过 PHP 连接到 Sybase【英文标题】:How to connect to Sybase via PHP 【发布时间】:2013-01-02 17:31:56 【问题描述】:我正在尝试使用 php5 连接到 Sybase 数据库。我相信我已经成功编译了带有PDO_DBLIB
的PHP,因为phpinfo()
在PDO 驱动程序下列出dblib
,而freetds
作为pdo_dblib
风格。
但是,当我尝试测试连接时,我收到错误读数:
带有消息“找不到驱动程序”的“PDOException”
我正在尝试使用此代码连接到我的 LAN 上的服务器:
$dbh = new PDO("sybase:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]');
任何建议将不胜感激!
【问题讨论】:
你好像没有在php.ini中安装和启用驱动你可以试试这个实验驱动:php.net/manual/en/ref.pdo-dblib.php 您找到解决方案了吗?我自己无法连接到 sybase 服务器。 【参考方案1】:您应该使用dblib
而不是sybase
,如下所示:
$dbh = new PDO("dblib:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]');
【讨论】:
【参考方案2】:PDO 不起作用,或者至少没有 PDO Sybase 对 php 的支持。在 Windows 上,您可以使用 ODBC,以及 PDO_SQLSRV 或 PDO_ODBC,这听起来可能很奇怪,但应该可以。
第二个选项,我会推荐它,是直接连接到 Sybase (SqlAnywhere),但你需要安装SQL Anywhere PHP Module
【讨论】:
Zdenek Machek,感谢您提供指向 SQL Anywhere PHP 模块的链接。 我正在尝试使用 SQL Anywhere PHP 模块,但是当我启动 httpd 时,我收到此错误:“无法加载 SQLAnywhere 客户端库。请确保可以找到 libdbcapi_r.so在您的 LD_LIBRARY_PATH 环境变量中。”我已将“SetEnv LD_LIBRARY_PATH /opt/sqlanywhere12/lib64”添加到我的 httpd.conf 文件中。但是,phpinfo 仍将 Apache 环境 LD_LIBRARY_PATH 显示为 /usr/local/apache2/lib。有什么建议吗? 是的,在你的机器上需要安装 Sybase SqlAnywhere 或者至少是 SqlAnywhere 客户端并且这个库需要添加到系统路径中,参见“echo $PATH” 感谢您的回复。我已经安装了 SQL Anywhere 12 Web 版,并且 libdbcapi_r.so 位于 /opt/sqlanywhere12/lib64 中。我已将"/opt/sqlanywhere12/lib64"
添加到我的系统路径中(它会在我“回显$PATH”时显示。)但是,我仍然从sqlanywhere 收到相同的错误。我了解 LD_LIBRARY_PATH 与系统路径不同,但我找不到更改 Apache Environment phpinfo() 下列出的 LD_LIBRARY_PATH 的方法。 /opt/sqlanywhere12/bin64/sa_config.sh 脚本似乎不会影响 Apache。这个变量真的是我需要改变的吗?非常感谢!
我尝试将 SQL Anywhere PHP 模块与 PHP5 一起使用,但这似乎是不可能的。我收到一个错误,模块和 php 是使用不同的模块 API 编译的【参考方案3】:
如果您使用的是 Ubuntu,您可以将 LD_LIBRARY_PATH 放在 envvars 中,它似乎可以读取...仍在尝试找到一种方法让它坚持 RHEL基于系统... Windows 我不太确定我希望您可以在
下设置系统范围的变量我的电脑 -> 属性 -> 高级选项
如果使用的是基于 RHEL 的系统,最好包括: export LD_LIBRARY_PATH=/path/to/library/ 在 httpd 重新启动脚本中(检查它是否加载了 /etc/sysconfig/httpd,如果是,则在其中添加该行- 现在重新启动 apache,您应该会看到一些活动。
【讨论】:
这甚至与所提出的问题无关。以上是关于如何通过 PHP 连接到 Sybase的主要内容,如果未能解决你的问题,请参考以下文章