2013-01-18 51 views
5

我试图用PHP5连接到Sybase数据库。我相信我已经成功地将PHP编译为PDO_DBLIB,因为phpinfo()在PDO驱动程序中列出了dblib,并且freetds编号为pdo_dblib如何通过PHP连接到Sybase

然而,当我尝试测试连接,我得到一个错误阅读:

'PDOException' with message 'could not find driver'

我想使用此代码连接到服务器我的局域网上:

$dbh = new PDO("sybase:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]'); 

任何建议将不胜感激!

+0

看来你没有安装,并在php.ini 启用驱动,你可以试试这个实验司机: HTTP:// PHP .net/manual/en/ref.pdo-dblib.php – shark555

回答

0

PDO不起作用,或者至少没有PDO Sybase支持php。在Windows上,你可以使用ODBC,并且PDO_SQLSRVPDO_ODBC,它可能听起来很奇怪,但它应该工作。

第二个选项,我会推荐它,是直接连接到Sybase(SQLAnywhere的),但你需要安装SQL Anywhere PHP Module

+0

Zdenek Machek,感谢您访问SQL Anywhere PHP模块的链接。 – zwiebelspaetzle

+0

我正在尝试使用SQL Anywhere PHP模块,但是当我启动httpd时,出现此错误:“无法加载SQLAnywhere客户端库,请确保可以在您的LD_LIBRARY_PATH环境变量中找到libdbcapi_r.so。 我在我的httpd.conf文件中添加了“SetEnv LD_LIBRARY_PATH/opt/sqlanywhere12/lib64”。但是,phpinfo仍然会将Apache环境LD_LIBRARY_PATH显示为/ usr/local/apache2/lib。 有什么建议吗? – zwiebelspaetzle

+0

是的,您的机器上需要安装Sybase SqlAnywhere或至少SqlAnywhere客户端,并且需要将此库添加到系统路径中,请参阅“echo $ PATH” –

0

如果您在使用Ubuntu,你可以把里面envvars中的LD_LIBRARY_PATH,似乎阅读。 ..仍然试图找到一种方法来让它坚持在基于RHEL的系统上...... Windows我不太确定我希望你可以在我的电脑下设置一个系统变量 - >属性 - >高级选项等等等等

如果正在使用基于RHEL的系统,在httpd restart脚本中包含: export LD_LIBRARY_PATH =/path/to/library /可能会更好(请检查它是否为加载/ etc/sysconfig/httpd,如果是的话,在那里添加行 - 现在重新启动Apache,你应该看到一些活动。

0

您应该使用dblib代替sybase,像这样:

$dbh = new PDO("dblib:host=192.168.1.xxx;dbname=[database-name]", '[user]', '[pass]');