呼吁在Ubuntu未定义功能odbc_connect()(Call to undefined fun

2019-09-29 17:41发布

我想用PHP连接SQL Server。 我已经安装了Microsoft ODBC驱动程序13 SQL Server和我一直在使用“ISQL”命令来测试它。 现在,当我试图连接到PHP服务器时,它总是崩溃,并说“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

Answer 1:

调用未定义功能odbc_connect()意味着你的PHP系统没有与该名称的任何功能。

由于它不是用纯PHP但是从PHP扩展功能的用户功能,这意味着你没有安装这样的扩展 。 值得一提的是,PHP扩展是不一样的SQL Server驱动程序(你需要两个 )。

您的代码还包含我的猜测是为了是字符串一些不确定的常量。 我强烈建议您启用在开发整箱的错误报告,这样你就不需要检查错误日志,了解简单的错误。



文章来源: Call to undefined function odbc_connect() in Ubuntu