【问题标题】:Connecting to SQL Server in Php - Extension Err在 PHP 中连接到 SQL Server - 扩展错误
【发布时间】:2011-01-21 14:38:10
【问题描述】:
<html>
    <head>
        <title>Connecting </title>
    </head>
    <body>
        <?php
    $host = "*.*.*.*";
 $username = "xxx";
 $password = "xxx";
 $db_name = "xxx";

    $db = mssql_connect($host, $username,$password)
    or die("Couldn't Connect");
 $selected = mssql_select_db($db_name, $db)
 or die("Couldn't open database");

?>
    </body>
</html>

我的错误信息是:

致命错误:在第 12 行调用 C:\wamp\www\php\dbase.php 中未定义的函数 mssql_connect()

我在 PHP 5.3.0 上使用 WampServer 2.0

当我检查扩展时,php_mssql 被选中。我还检查了 php.ini 文件以确保它没有被注释掉。

我的文件 dbase.php 保存在 C:\wamp\www\php 中。我已尝试停止服务,关闭所有内容,然后再次运行它。我知道问题是没有以某种方式包含扩展文件。

以下内容是从我的 php.ini 文件中复制而来的。 请注意,我制作了所有 http = /http 以避免发布链接。

;;;;;;;;;;;;;;;;;;;;;;;;;; ;路径 和目录; ;;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2" ;include_path = ".:/php/includes" ; Windows:“\path1;\path2”include_path = "C:\wamp\bin\php\php5.3.0\ext" ; ; PHP 对 include_path 的默认设置 是 ".;/path/to/php/pear" ; /http://php.net/include-path

; PHP 页面的根目录,仅使用 如果非空。 ;如果 PHP 没有被编译 使用 FORCE_REDIRECT,您应该设置 文档根;如果您将 php 作为 任何 Web 服务器下的 CGI(除了 IIS);请参阅文档以了解安全性 问题。另一种方法是使用 ; cgi.force_redirect 配置如下 ; /http://php.net/doc-root doc_root =

; PHP打开的目录 使用 /~username 的脚本仅使用 ;如果非空。 ; /http://php.net/user-diruser_dir =

;可加载的目录 扩展(模块)驻留。 ; /http://php.net/extension-dir ; extension_dir = "./" ;在窗户上:; extension_dir = "ext" extension_dir = "c:/wamp/bin/php/php5.3.0/ext/"

;是否启用 dl() 功能。 dl() 函数不 工作 ;在多线程中正确 服务器,例如 IIS 或 Zeus,并且是 自动地 ;对他们禁用。 ; /http://php.net/enable-dl enable_dl = 关闭

; cgi.force_redirect 是必要的 提供将 PHP 作为 CGI 运行的安全性 在下面 ;大多数网络服务器。剩下 未定义,PHP 通过 默认。你可以 ;在这里关掉 风险自负; 您可以放心 为 IIS 关闭这个,事实上,你 必须。 ; /http://php.net/cgi.force-redirect ;cgi.force_redirect = 1

;如果启用 cgi.nph,它将强制 cgi 总是发送状态:200 with ; 每一个请求。 PHP 的默认行为 是禁用此功能。 ;cgi.nph = 1

;如果 cgi.force_redirect 开启, 并且您没有在 Apache 下运行 或网景; (iPlanet) 网络服务器, 你可能需要设置一个环境 PHP 的变量名;会寻找 知道可以继续 执行。设置这个变量可以 ;导致安全问题,了解你 正在做第一个。 ; /http://php.net/cgi.redirect-status-env ;cgi.redirect_status_env = ;

; cgi.fix_pathinfo 提供 real PATH_INFO/PATH_TRANSLATED 支持 电脑动画。 PHP的;以前的行为是 将 PATH_TRANSLATED 设置为 SCRIPT_FILENAME,不要摸索; PATH_INFO 是什么。更多 有关 PATH_INFO 的信息,请参阅 cgi 眼镜。环境 ;这到 1 将导致 PHP CGI 修复其路径以符合 规范。一个设置;零原因 PHP 表现得像以前一样。默认为 1.你应该修复你的脚本;使用 SCRIPT_FILENAME 而不是 PATH_TRANSLATED。 ; /http://php.net/cgi.fix-pathinfo ;cgi.fix_pathinfo=1

; IIS 下的 FastCGI(基于 WINNT 操作系统)支持的能力 冒充;的安全令牌 调用客户端。这允许 IIS 定义;安全上下文 请求下运行。 mod_fastcgi下 阿帕奇;目前不支持 此功能(2002 年 3 月 17 日);设置为 1 如果在 IIS 下运行。默认为 零。 ; /http://php.net/fastcgi.impersonate ;fastcgi.impersonate = 1;

;通过 FastCGI 禁用日志记录 联系。 PHP的默认行为是 启用 ;这项特征。 ;fastcgi.logging = 0

; cgi.rfc2616_headers 配置 选项告诉 PHP 什么类型的标头 到 ;发送 HTTP 响应时使用 代码。如果设置为 0 PHP 发送状态: 标头;由 Apache 支持。 当此选项设置为 1 PHP 将 发送 ;符合 RFC2616 的标头。 ; 默认为零。 ; /http://php.net/cgi.rfc2616-headers ;cgi.rfc2616_headers = 0

;;;;;;;;;;;;;;;; ;文件上传; ;;;;;;;;;;;;;;;;

;是否允许 HTTP 文件上传。 ; /http://php.net/file-uploads file_uploads = 开启

; HTTP 的临时目录 上传的文件(将使用系统 如果没有则默认;指定的)。 ; /http://php.net/upload-tmp-dir upload_tmp_dir = "c:/wamp/tmp"

;允许上传的最大大小 文件。 ; /http://php.net/upload-max-filesize upload_max_filesize = 2M

另外,我的 php.ini 文件保存在:C:\wamp\bin\apache\Apache2.2.11\bin

【问题讨论】:

    标签: php sql-server wampserver


    【解决方案1】:

    也许 php 正在使用另一个 ini 文件,例如 C:\windows\php.ini,它过去曾发生在我身上 :)

    【讨论】:

      【解决方案2】:

      我也遇到过同样的问题,解决方法很简单。用于 MS SQL Server 的 PHP 5.3 中的默认驱动程序在 Windows 中不再工作。 Microsoft 已发布您可以使用的驱动程序。驱动程序附带文档。

      这里是您可以找到下载的链接:http://sqlsrvphp.codeplex.com/

      这里是您可以找到一些文档的链接:http://msdn.microsoft.com/en-us/library/cc296172(SQL.90).aspx

      【讨论】:

        【解决方案3】:

        既然您使用的是 PHP 5.3,那么使用 PDO 对象不是更有意义吗?像这样:

        <?php
        
        class DatabaseConn {
        
            static function createNewMySQLConnection() {
        
                try {
                    $conn = new PDO("mysql:dbname=" . MYSQL_DB_DATA . "; host=" . MYSQL_DB_HOST, MYSQL_DB_USER, MYSQL_DB_PASS);
                    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                } catch (PDOException $e) {
                    $x = new MyException("Failed to connect to db: " . $e->getMessage());
                    $x->errorMessage();
                    return null;
                }
        
                $conn->beginTransaction();
        
                return $conn;
            }
        
            static function createNewPgSQLConnection() {
        
                try {
                    $conn = new PDO("pgsql:dbname=" . PGSQL_DB_DATA . "; host=" . PGSQL_DB_HOST, PGSQL_DB_USER, PGSQL_DB_PASS);
                    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                } catch (PDOException $e) {
                    $x = new MyException("Failed to connect to db: " . $e->getMessage());
                    $x->errorMessage();
                    return null;
                }
        
                $conn->beginTransaction();
        
                return $conn;
            }
        
            static function createNewMsSQLConnection() {
        
                try {
                    $conn = new PDO("dblib:dbname=" . MSSQL_DB_DATA . "; host=" . MSSQL_DB_HOST, MSSQL_DB_USER, MSSQL_DB_PASS);
                    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                } catch (PDOException $e) {
                    $x = new MyException("Failed to connect to db: " . $e->getMessage());
                    $x->errorMessage();
                    return null;
                }
        
                $conn->beginTransaction();
        
                return $conn;
            }
        
            static function runExecute($conn, $query) {
        
                try {
        
                    $stmt = $conn->prepare($query->sql);
                    if (isset($query->input) && !is_null($query->input)) {
                        $stmt->execute($query->input);
                        return true;
                    } else {
                        $stmt->execute();
                        return true;
                    }
                } catch (PDOException $e) {
        
                    if (isset($query->input)) {
        
                        $inputs = "";
                        foreach ($query->input as $i) {
                            $inputs .= "'" . $i . "' ";
                        }
                        $msg = "$query->sql with input(s) $inputs. statement failed, rolling back: " . $e->getMessage();
                    } else {
                        $msg = "$query->sql . statement failed, rolling back: " . $e->getMessage();
                    }
                    $x = new MyException($msg);
                    $x->errorMessage();
                }
                return false;
            }
        
            static function runPreparedQuery($conn, $query) {
        
                $results = null;
                try {
                    $stmt = $conn->prepare($query->sql);
                    if (isset($query->input) && !is_null($query->input)) {
                        $stmt->execute($query->input);
                    } else {
                        $stmt->execute();
                    }
                    $results = $stmt->fetchAll();
                } catch (PDOException $e) {
        
                    if (isset($query->input)) {
        
                        $inputs = "";
                        foreach ($query->input as $i) {
                            $inputs .= "'" . $i . "' ";
                        }
                        $msg = "$query->sql with input(s) $inputs. statement failed, rolling back: " . $e->getMessage();
                    } else {
        
                        $msg = "$query->sql . statement failed, rolling back: " . $e->getMessage();
                    }
        
                    $x = new MyException($msg);
                    $x->errorMessage();
        
                    return null;
                }
        
                return $results;
            }
        
            static function getLastInsertId($conn) {
                return $conn->lastInsertId();
            }
        
            static function closeConn($conn, $commit) {
        
                if ($commit) {
                    $conn->commit();
                } else {
                    $conn->rollBack();
                }
        
                $conn = null;
            }
        
        }
        ?>
        

        它并不完美,但对我有用

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-12
          • 1970-01-01
          • 2014-02-08
          • 1970-01-01
          • 2020-03-31
          • 1970-01-01
          • 2013-05-27
          • 1970-01-01
          相关资源
          最近更新 更多