无法使用 PDO 连接到 MSSQL PHP7:unixODBC
Unable to connect to MSSQL PHP7 with PDO: unixODBC
首先,我很抱歉,因为我对 Linux 的经验很少,所以我可能只是不理解一些显而易见的事情。最后,我试图通过 PHP 查询 MSSQL 数据库。
我已经安装了 freetds 和 unixODBC。我用 tsql (freetds) 和 isql (unixODBC) 确认了设置,一切正常。问题是当我尝试使用以下 pdo 从 PHP 连接时:
$db = new PDO('odbc:mssql', '$username','$password');
我收到致命的 PHP 错误:未捕获的 PDOException:找不到驱动程序...
经过进一步检查,我查看了我的 PHP 信息文件,可用的 PDO 驱动程序是:mysql 和 sqlite。 How/where 我可以获得 PHP7 的 pdo odbc 驱动程序吗?在 PHP 文档中,驱动程序似乎包含在 PHP 源代码中,但我看到的唯一选择是使用 ./configure,据我所知,这只是从源代码编译.
有没有办法将驱动程序添加到 PHP7 的已编译版本中?我觉得我错过了一些愚蠢的东西。任何帮助将不胜感激!
其他 PHP 驱动程序应作为系统包安装,具体取决于您的 linux 发行版。例如,对于 Debian,您可以使用此命令安装所需的软件包:
sudo apt-get install php7.1-odbc
至少,这将是在正确道路上的一步。
如果你的OS是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依赖
apt-get install php-pear php-dev
安装 sqlsrv(使用 pecl 搜索 sqlsrv 检查最新版本)
pecl install sqlsrv-4.0.5
安装pdo_sqlsrv(用pecl搜索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
分OS 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*||"`
或通过 yum look; https://webtatic.com/packages/php70/
首先,我很抱歉,因为我对 Linux 的经验很少,所以我可能只是不理解一些显而易见的事情。最后,我试图通过 PHP 查询 MSSQL 数据库。
我已经安装了 freetds 和 unixODBC。我用 tsql (freetds) 和 isql (unixODBC) 确认了设置,一切正常。问题是当我尝试使用以下 pdo 从 PHP 连接时: $db = new PDO('odbc:mssql', '$username','$password');
我收到致命的 PHP 错误:未捕获的 PDOException:找不到驱动程序...
经过进一步检查,我查看了我的 PHP 信息文件,可用的 PDO 驱动程序是:mysql 和 sqlite。 How/where 我可以获得 PHP7 的 pdo odbc 驱动程序吗?在 PHP 文档中,驱动程序似乎包含在 PHP 源代码中,但我看到的唯一选择是使用 ./configure,据我所知,这只是从源代码编译.
有没有办法将驱动程序添加到 PHP7 的已编译版本中?我觉得我错过了一些愚蠢的东西。任何帮助将不胜感激!
其他 PHP 驱动程序应作为系统包安装,具体取决于您的 linux 发行版。例如,对于 Debian,您可以使用此命令安装所需的软件包:
sudo apt-get install php7.1-odbc
至少,这将是在正确道路上的一步。
如果你的OS是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依赖
apt-get install php-pear php-dev
安装 sqlsrv(使用 pecl 搜索 sqlsrv 检查最新版本)
pecl install sqlsrv-4.0.5
安装pdo_sqlsrv(用pecl搜索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
分OS 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*||"`
或通过 yum look; https://webtatic.com/packages/php70/