我是Linux新手。 我configuration了一个新的Ubuntu 16.04服务器,通过Tasksel添加了LAMP,并添加了PhpMyAdmin。 我将我的web应用程序添加到html文件夹,并运行我的MySQL脚本。 这部分工作正常。 我有一个查询远程SQL Server的PHP页面。 这是我的问题所在:
我按照说明安装了SQL Server ODBC驱动程序:
https://msdn.microsoft.com/en-us/library/hh568454(v=sql.110).aspx
udo su sh -c 'echo "deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/mssql-ubuntu-xenial-release/xenial main" > /etc/apt/sources.list.d/mssqlpreview.list' sudo apt-key adv --keyserver apt-mo.trafficmanager.net --recv-keys 417A0893 apt-get update apt-get install msodbcsql unixodbc-dev-utf16
SQL Server ODBC不在PhpInfo()中列出。
当我用远程SQL Server查询命中页面时,发现我的Apache2错误日志中有一个错误:
[Tue Nov 01 04:42:52.651772 2016] [:error] [pid 1306] [client ::1:33146] PHP Fatal error: Uncaught Error: Call to undefined function odbc_connect() in /var/www/html/xxxxxxx.php:67\n Stack trace:\n#0 {main}\n thrown in /var/www/html/xxxxxxx.php on line 67
我错过了什么?
我有与MSDN链接回购相同的问题。
你将需要安装php-odbc软件包,它需要一个与微软回购的软件库冲突的库。
我使用以下命令手动安装了驱动程序:
sudo apt-get -y install build-essential cd /tmp/ wget ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-2.3.4.tar.gz tar xvf unixODBC-2.3.4.tar.gz cd unixODBC-2.3.4/ ./configure --enable-gui=no --enable-drivers=no --enable-iconv --with-iconv-char-enc=UTF8 --with-iconv-ucode-enc=UTF16LE --libdir=/usr/lib/x86_64-linux-gnu --prefix=/usr --sysconfdir=/etc make sudo make install sudo apt-get install openssl libkrb5-3 libc6 e2fsprogs cd /tmp/ wget http://download.microsoft.com/download/B/C/D/BCDD264C-7517-4B7D-8159-C99FC5535680/RedHat6/msodbcsql-11.0.2270.0.tar.gz tar xvf msodbcsql-11.0.2270.0.tar.gz cd msodbcsql-11.0.2270.0/ sudo bash install.sh install --force --accept-license sudo ln -s /lib/x86_64-linux-gnu/libcrypto.so.1.0.0 /usr/lib/x86_64-linux-gnu/libcrypto.so.10 sudo ln -s /lib/x86_64-linux-gnu/libssl.so.1.0.0 /usr/lib/x86_64-linux-gnu/libssl.so.10 sudo ln -s /usr/lib/x86_64-linux-gnu/libodbcinst.so.2.0.0 /usr/lib/x86_64-linux-gnu/libodbcinst.so.1
您现在可以在/etc/odbc.ini中input连接,并replaceIP和密码。 例如:
[test] Driver = ODBC Driver 11 for SQL Server Server = 192.168.1.2,1433 Database = TEST
并访问PDO:
$db = new PDO('odbc:test', 'USERNAME' 'PASSWORD');
按照在Linux和macOS页面上为SQL Server安装Microsoft ODBC驱动程序, Ubuntu上build议的安装步骤是:
sudo su curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - curl https://packages.microsoft.com/config/ubuntu/16.04/prod.list > /etc/apt/sources.list.d/mssql-release.list exit sudo apt-get update sudo ACCEPT_EULA=Y apt-get install msodbcsql # optional: for bcp and sqlcmd sudo ACCEPT_EULA=Y apt-get install mssql-tools echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bashrc source ~/.bashrc # optional: for unixODBC development headers sudo apt-get install unixodbc-dev
然后确保为您的Apache启用odbc扩展,例如a2enmod odbc ,然后通过: apache2ctl -M进行检查。 如果你没有这个扩展名,可以通过apt-get install php-odbc (CentOS使用yum )。