3

我正在使用的服务器正在运行 php 5.5,它安装了 FreeTDS dblib。

php -v返回;

PHP 5.5.0-dev (cli) (built: Oct 23 2012 15:41:58) Copyright (c) 1997-2012 The PHP Group Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies

构建就是这样;

Configure Command => './configure' '--with-apxs2=/usr/bin/apxs2' '--enable-track-vars' '--with-mssql' '--with-png-dir=/usr' '--with-jpeg-dir=/usr' '--with-zlib-dir=/usr' '--enable-ftp' '--with-gd' '--enable-freetype-4bit-antialias-hack' '--with-config-file-path=/etc' '--enable-calendar' '--with-curl' '--with-curlwrappers' '--enable-exif' '--with-mysql' '--with-ldap' '--with-freetype-dir=/usr' '--enable-sockets' '--with-pdo-mysql' '--enable-soap' '--with-mcrypt' '--with-pdo-dblib' '--with-openssl' '--enable-sysvsem' '--enable-shmop' '--enable-pcntl' '--with-xsl'

我只是尝试使用以下内容连接到 SQL Server 框;

<?php $pdo = new PDO ('dblib:host=fqdn,port;dbname=db', 'usr', 'passwd'); ?>

输出如下;

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[] (null) (severity 0)' in /path/to/file.php:17 Stack trace: #0 /path/to/file.php(17): PDO->__construct('dblib:host=fqdn...', 'usr', 'passwd') #1 {main} thrown in /path/to/file.php on line 1

在对现有的堆栈帖子进行了大量搜索后,它们都与自 5.2 RC 或更早版本的 FreeTDS 以来 PHP 的错误修复有关。考虑到这个服务器是 5.5 和更高版本的 FreeTDS,我想知道是否有人对这个非常有用的空 SQL 状态错误消息有答案。

有趣的是,按照确认您的 FreeTDS 安装的指南建议了无法为我运行的命令。我将尝试重新安装 FreeTDS。

4

1 回答 1

5

因此,您连接的位置似乎会影响端口形式。

在基于 Windows 的服务器上使用 PHP 时,连接字符串应该是;

<?php $pdo = new PDO ('dblib:host=fqdn,port;dbname=db', 'usr', 'passwd'); ?>

在基于 Linux 的服务器上使用 PHP 时,连接字符串应该是;

<?php $pdo = new PDO ('dblib:host=fqdn:port;dbname=db', 'usr', 'passwd'); ?>

我假设 fqdn/port 的差异是基于您的连接 TO 而不是 FROM 的情况。

不过,这个系统这个模块的错误处理显然没有考虑太多!

于 2013-11-01T11:41:47.847 回答