【问题标题】:How to connect to Sybase via PHP如何通过 PHP 连接到 Sybase
【发布时间】: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 服务器。

标签: php sybase dbo


【解决方案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_SQLSRVPDO_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,您应该会看到一些活动。

    【讨论】:

    • 这甚至与所提出的问题无关。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 2011-01-01
    • 2011-02-18
    • 1970-01-01
    • 2011-06-16
    相关资源
    最近更新 更多