Mssql_connect在Ubuntu中如何与PHP7.1兼容

4

我使用Windows 10和SQL Server来搭建我的网站(使用codeigniter),以下是Windows的设置:

$db['default'] = array(
    'dsn'   => '',
    'hostname' => '----',
    'username' => '--',
    'password' => '-----',
    'database' => '-----',
    'dbdriver' => 'sqlsrv',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => (ENVIRONMENT !== 'production'),
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'encrypt' => FALSE,
    'compress' => FALSE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

现在,我想将我的网站从本地上传到我的服务器。我的服务器使用的是Ubuntu操作系统。

Distributor ID: Ubuntu
Description:    Ubuntu 14.04.4 LTS
Release:        14.04
Codename:       trusty

当我上传我的CodeIgniter代码时,出现以下错误:

消息:调用未定义的函数sqlsrv_connect()

我的PHP版本为:

PHP Version 7.1.10-1+ubuntu14.04.1+deb.sury.org+1

我该怎么解决这个问题?提前感谢。

我使用的是Ubuntu系统,而不是Windows。


1
@Dalton,我认为这不是重复的。另一个线程是关于Windows,而这个线程是尝试在Debian Ubuntu 14上访问sqlsrv。 - Navid
@YVS1102,你有服务器的ssh访问权限吗?你能检查一下sqlsrv和pdo_sqlsrv模块是否存在吗?你可以运行php -m命令来查看php模块列表。另外,请确定一下PECL是否已经安装在你的服务器上。 - Navid
3个回答

5
根据微软的教程,步骤如下:

1. 安装ODBC驱动程序

curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-tools.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install mssql-tools
sudo apt-get install unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc
source ~/.bashrc

2. 获取 PHP Sql Server 扩展

sudo pecl install sqlsrv pdo_sqlsrv
sudo echo "extension= pdo_sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
sudo echo "extension= sqlsrv.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

以下是完整的教程(包括安装数据库服务器本身):

教程


1
我认为'SQLSRV'将把DLL合并到PHP的Windows版本中。
如果您想连接Linux上的SQL Server,请安装UnixODBC和FreeTDS,并使用PDO进行连接。实际上,我正在使用Code Igniter和SQL Server。

1
你需要做的是确保你有适用于PHP的正确的SQL Server驱动程序。微软在github上提供了一个驱动程序: Microsoft PHP Drivers for SQL Server 我相信他们有关于构建Ubuntu 16.04的说明。我注意到你提到你有Ubuntu 14.04.4 - 我自己没有尝试过,但它可能会起作用。
然而,几年前我在Ubuntu 14.04上成功使用了这个网站上的说明:RobsPHP,但这是针对PHP 5.6的。
你的研究中可能还有另一个有用的链接:SQLSrv installation (php.net)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接