2013-02-28 31 views
5

Tôi đang cố gắng để có được wamp php để giao tiếp với một DB MsSQL nhưng tôi dường như không thể làm cho nó hoạt động. Các thông báo lỗi hiện tại tôi nhận được trên trình duyệt (Chrome) là:php mssql mở rộng trên wamp

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: (...) Couldn't connect to SQL Server 
  1. ntwdblib.dll là đúng phiên bản (2000.80.194.0)

  2. tôi không thể sử dụng php_sqlsrv (việc triển khai máy chủ là linux chỉ, sqlsrv là cửa sổ duy nhất), mặc dù sử dụng sqlsrv tôi có thể kết luận rằng thông tin truy cập là chính xác (máy chủ, người dùng, mật khẩu)

  3. Tôi đã hạ cấp xuống wampserver 2.1e & php 5.3.1 (một số người làm cho nó hoạt động như này)

  4. không có lỗi trên apache_error.log khi tôi khởi động lại máy chủ wamp

  5. cài đặt freetds trên máy tính của tôi bị treo apache

  6. máy từ xa thành công sử dụng php_mssql.dll (server linux)

mã này tôi đang sử dụng:

<?php 
$dbhandle = mssql_connect($ip,$user,$pass) or die("Couldn't connect to SQL Server on $ip"); 
$selected = mssql_select_db($dbname,$dbhandle) or die("Couldn't open database at SQL server: $ip"); 
?> 

Tôi bây giờ sẽ thử một máy ảo Linux, nhưng chắc chắn ngay cả khi nó hoạt động, nó sẽ là một nỗi đau (chậm và ít tính năng).

Hệ thống của tôi: Windows 7, Wampserver 2.1e, PHP 5.3.1

Tôi có thể thử gì khác? :(

+0

Bạn có thể hiển thị mã bạn đã thử không? – Tjoene

+0

Chắc chắn, đây là mã của tôi: $ dbhandle = mssql_connect ($ ip, $ user, $ pass) hoặc chết ("Không thể kết nối với SQL Server trên $ ip"); $ selected = mssql_select_db ($ dbname, $ dbhandle) hoặc chết ("Không thể mở cơ sở dữ liệu tại máy chủ SQL: $ ip"); –

+0

Vẫn còn bị mắc kẹt trên này. Hiện tại tôi đang sử dụng một chức năng để kiểm tra xem trang web có trực tuyến hay không. Nếu nó là nó gọi mssql (mà hoạt động trên máy chủ Linux), nếu nó không phải là nó gọi các bảng giả trên mysql, trong đó có cấu trúc tương tự như các bảng mssql. Điều này hoạt động nhưng nó là xa lý tưởng ...: P –

Trả lời

0

Bạn có cài đặt MSSQL Vì M WAMP là MySQL không MSSQL

+0

Tôi biết, nhưng tôi cần phải làm việc với một db mssql trong trường hợp này, không mysql. Cơ sở dữ liệu ở xa, nó không có trên máy của tôi. –

0

Không thể kết nối đến máy chủ:?. (...) Không thể kết nối với SQL Server"

bạn đã cài đặt bất kỳ mô-đun điều khiển trong PHP cho MS-SQL ??

Bên cạnh một VM là không nhất thiết phải chậm và không đặc biệt - ít nhất là nó hoạt động :)

MDB2 hoặc PDO migh t là thích hợp nhất để trừu tượng hóa cơ sở dữ liệu I/O.

Q: Bạn có thể mở một thiết bị đầu cuối cho MS-SQL, ví dụ: Telnet ??

(Điều này ít nhất sẽ loại bỏ bất kỳ loại vấn đề kết nối nào).

Bạn có thể cần module này ở đây: PECL odbtp> = 1.1.1 (giao thức truyền tải mở cơ sở dữ liệu)

extension=php_mssql.dll 

^cũng có, thanh toán phpinfo() một lần nếu phần mở rộng này thậm chí còn được nạp.

http://www.php.net/manual/en/mssql.installation.php

Vâng - cài đặt mySQL trên Windows sẽ không có bất kỳ vấn đề (trong trường hợp đó sẽ có ý nghĩa).

+0

Cảm ơn bạn đã trả lời. Tôi đã cài đặt phần mở rộng php_mssql và không có lỗi nào được báo cáo bởi apache.Tôi cũng biết không có vấn đề kết nối bởi vì nếu tôi sử dụng phần mở rộng sqlsrv (với các thiết lập tương tự) tất cả mọi thứ hoạt động tốt. –

1

Giả sử bạn đã cố gắng cài đặt trình điều khiển/tiện ích mở rộng từ đây: http://www.microsoft.com/en-gb/download/details.aspx?id=20098 và bạn đã thay đổi php.ini trong thư mục PHP của ngăn xếp AMP ..; và đặt phần mở rộng mssql trong thư mục php/ext ...

sau vài giờ tìm kiếm, hướng dẫn này đã kết nối thành công với cơ sở dữ liệu MS SQL. http://webcheatsheet.com/php/connect_mssql_database.php

chỉnh sửa: Hơn nữa lớp kết nối của tôi mất DB uname PW và serverIP như thông số nhà xây dựng, và các nhà xây dựng gọi hàm setCon(), vì vậy khi đối tượng được tạo ra kết nối được quá. sau đó tôi có thể gọi các truy vấn trên các kết nối đối tượng nó trong một phong cách OOP

function setCon(){ 
    $conn = mssql_connect($this->server, $this->UName, $this->pw); 
    if ($conn){ 
     echo "Connection established @ $this->server.$this->DB (Connected to MS SQL DB)\n"; 
    } 
    else{ 
     echo "Connection could not be established."; 
     die(print_r(sqlsrv_errors(), true)); 
    } 

và sau đó này là cần thiết để truy cập kết nối tạo

function getCon(){ 
    return mssql_connect($this->server, $this->UName, $this->pw); 
} 
0

Actualy theo mặc định wampserver không đi kèm với php_mssql. dll phần mở rộng được thực hiện trên đầu trang của php_pdo_mssql hoặc php_dblib. Thử nghiệm trên x64 wampserver 2 PHP 5.3.13

  • Sử dụng php_pdo_mssql

    1. Cài đặt wampserver
    2. Kích hoạt php_pdo_mssql
    3. Kích hoạt php_mssql
    4. bản sao ntwdblib.dll để bin/php/php {version}/ext/và bin/apache/{version}/bin
    5. khởi động lại tất cả các dịch vụ
  • Sử dụng php_dblib

    1. thay vì php_pdo_mssql kích hoạt php_dblib.

Cảnh báo không kích hoạt cả php_pdo_mssql và php_dblib.

Trên các phiên bản khác nhau của công cụ wampserver php hoạt động khác nhau trên 5.3.1 giải pháp đầu tiên có hiệu quả đối với tôi nhưng trên 5.3.13 giây.