1

首先,我很抱歉,因为我对 Linux 的经验很少,所以我可能只是不理解一些明显的东西。最终,我试图通过 PHP 查询 MSSQL 数据库。

我已经安装了 freetds 和 unixODBC。我用 tsql (freetds) 和 isql (unixODBC) 确认了设置,一切正常。问题是当我尝试使用 pdo 从 PHP 连接时,使用以下命令: $db = new PDO('odbc:mssql', '$username','$password');

我收到一个致命的 PHP 错误:未捕获的 PDOException:找不到驱动程序...

经过进一步检查,我查看了我的 PHP 信息文件,可用的 PDO 驱动程序有:mysql 和 sqlite。如何/在哪里获得 PHP7 的 pdo odbc 驱动程序?在 PHP 文档中,驱动程序似乎包含在 PHP 源代码中,但我看到的唯一选择是使用 ./configure ,据我了解,这只是从源代码编译。

有没有办法将驱动程序添加到已经编译的 PHP7 版本中?我觉得我错过了一些愚蠢的东西。任何帮助将不胜感激!

4

2 回答 2

2

如果你的操作系统是 UBUNTU

安装适用于 Linux 的 unixODBC 驱动程序管理器和 Microsoft ODBC 驱动程序

wget https://raw.githubusercontent.com/Microsoft/msphpsql/PHP-7.0-Linux/ODBC%20install%20scripts/installodbc_ubuntu.sh

运行安装程序

sh installodbc_ubuntu.sh

安装PHP依赖is

apt-get install php-pear php-dev

安装 sqlsrv(使用 pecl search sqlsrv 检查最新版本)

pecl install sqlsrv-4.0.5

安装 pdo_sqlsrv(使用 pecl search sqlsrv 检查最新版本)

pecl install pdo_sqlsrv-4.0.5

加载扩展

echo "extension=sqlsrv.so" | sudo tee --append /etc/php/7.0/fpm/php.ini
echo "extension=pdo_sqlsrv.so" | sudo tee --append /etc/php/7.0/fpm/php.ini

重启 PHP-FPM

service php7.0-fpm restart

对于 Windows https://docs.microsoft.com/en-us/sql/connect/php/loading-the-php-sql-driver?view=sql-server-2017

CentOS 7

sudo su
curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssql-release.repo
exit
sudo yum update
sudo ACCEPT_EULA=Y yum install -y msodbcsql mssql-tools unixODBC-devel 
sudo yum groupinstall "Development Tools"
sudo pecl install sqlsrv
sudo pecl install pdo_sqlsrv
echo "extension=sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
echo "extension=pdo_sqlsrv" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

或通过百胜看;https://webtatic.com/packages/php70/

于 2018-06-13T15:34:30.243 回答
1

附加的 PHP 驱动程序应作为系统包安装,具体取决于您的 linux 发行版。例如,对于 Debian,您可以使用以下命令安装所需的软件包:

sudo apt-get install php7.1-odbc

至少,这将是正确道路上的一步。

于 2018-06-13T15:34:05.160 回答