php Apache MSSQL 設定

Posted: 2013 年 04 月 24 日 in php

1. 下載 AppServ (Apache 2.0 Handler, 內含PHP Version 5.2.6、MySQL 5.0.51a、Apache 2.2.8  ), 安裝並執行

2. 雖然 php 有內建 mssql 的支援函式, 但這個功能並沒有預設開啟, 因此必須修改 C:\Windows\php.ini 將" ;extension=php_mssql.dll" 前面的 (  ;  ) 去掉

3. 將 AppServ 下的兩個 dll 檔拷貝到 windows\system32 下: [ AppServ\php5\ntwdblib.dll、AppServ\php5\ext\php_mssql.dll ]

4. 由於 php 所附的 dll 可能是舊版的, 只能支援到 MS SQL 2000 所以必須重新下載 ntwdblib.dll( http://webzila.com/dll/1/ntwdblib.zip ),解壓縮之後並貼到 windows\system32 中覆蓋舊有的檔案

5. 重新啟動 appserv 中的 appache

6. 如果是 MS SQL 2005 以上的版本, 預設的 TCP/IP 和 Named 連線功能是關 閉的, 必須到 MS SQL 上將這兩個功能打開

a. 打開 SQL Server Enterprise Manager 編輯該 SQL Server 的參數 (或是到控制台下的 Administrative Tools 打開 SQL 的管理程式也可以)

b. 點選 “網路設定", 將 “具名管道" 與 TCP/IP 加入後確定即可

7. 測試連線

8.php預設的session不能直接使用,必須至php.ini中,將「output_buffering = Off」,改為「output_buffering = 4096」,不設的話,在php檔為UTF-8編碼下可能會出現以下的訊息 「 cannot send session cache limiter-headers already sent (output start at …………) 」

<html>
<head>
<title>MS SQL Connection Test</title>
</head>
<body>
<?php
    $dhcp_dbh = mssql_connect("<your ip>", "<mssql_user>", "<sql_password>") 
                or die("Can't Connect to SQL Server");
    print "connection = ".$dhcp_dbh;
?>
</body>
</html>

====== PART 2 ===============

PHP + MSSQL – Apache 設定

   Apache 及 php.ini
1. 更改 php.ini
mssql.secure_connection = On

extension=php_mssql.dll (移除 ; )2. SQL Server – 伺服器驗證 : SQL Server 及 Windows 驗證模式3. 將 \php5\ext\php_mssql.dll copy 至下列 folder.
C:\Windows\System32\4. 找尋 ntwdblib.dll (版本 2000.80.194.0 或以上), copy 至下列 folder.
C:\Windows\System32\
\php5\
\Apache\bin\5. Restart Apache 服務註 : 設定錯誤出現之 error message.
Warning: mssql_connect() [function.mssql-connect]: Unable to connect to serve
 php 程式碼
<table border="1″ cellpadding="0″ cellspacing="0″><?php
$server = ‘(Host Name),(Port No.)’;$con=mssql_connect($server,'(SQL Server User Account Login Name)’,'(SQL Server User Account Password)’);$msdb=mssql_select_db(‘Soccer’,$con);$query = mssql_query(‘SELECT * FROM dbo.Team’);if (!mssql_num_rows($query)) {
echo ‘No records found’;
}else{
while ($row = mssql_fetch_array($query, MSSQL_NUM)) {
echo “<tr>" ;
echo “<td>" ;
echo $row[0] . “</td><td>" ;
echo $row[1] . “</td><td>" ;
echo $row[2] . “</td></tr>" ;
}
}mssql_free_result($query);?></table>

發表留言