在Ubuntu中调用未定义的函数odbc_connect()

时间:2016-07-15 09:48:42

标签: php sql-server apache ubuntu odbc

我正在尝试将PHP连接到SQL服务器。我已经为SQL Server安装了Microsoft ODBC Driver 13,我使用' isql'进行了测试。命令。现在,当我尝试使用PHP连接到服务器时,它总是崩溃并说出#34; http错误500"。这是代码:

<?php
$server = merkur.edikt.local;
$database = ITServiceE;
$connection = odbc_connect("Driver={ODBC DRIVER 13 for SQL Server};
    Server=$server;Database=$database;", 
    'user', 
    'PW'
);
echo "connected";
?>

我正在使用Ubuntu 16.04服务器以及Apache2和PHP 7。 我认为Apache的权限可能有问题(如果Apache可以访问ODBC驱动程序),但我不确定这是如何工作的。 编辑: 以下是Apache错误的日志:

PHP Notice:  Use of undefined constant merkur - assumed 'merkur' in         /var/www/html/index.php on line 2
PHP Notice:  Use of undefined constant edikt - assumed 'edikt' in /var/www/html/index.php on line 2
PHP Notice:  Use of undefined constant local - assumed 'local' in /var/www/html/index.php on line 2
PHP Notice:  Use of undefined constant ITServiceE - assumed 'ITServiceE' in /var/www/html/index.php on line 3
PHP Fatal error:  Uncaught Error: Call to undefined function odbc_connect() in /var/www/html/index.php:4\nStack trace:\n#0 {main}\n  thrown in /var/www/html/index.php on line 4

并且文件odbc.ini为空,odbcinst.ini如下所示:

[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0
Threading=1
UsageCount=2

1 个答案:

答案 0 :(得分:1)

调用未定义的函数odbc_connect() 表示您的PHP系统没有任何具有该名称的函数。

由于它不是用纯PHP编写的用户函数,而是来自PHP扩展的函数,这意味着您尚未安装such extension。值得注意的是,PHP扩展与SQL Server驱动程序不同(您需要两者)。

您的代码还包含一些未定义的常量,我猜这些常量应该是字符串。我强烈建议您在开发框中启用完整的错误报告,这样您就不需要检查错误日志以了解简单错误。