2013-02-28 5 views
5

Sto cercando di ottenere wamp php per comunicare con un DB MsSQL ma non riesco a farlo funzionare. Il messaggio di errore corrente ottengo sul browser (Chrome) è:estensione php mssql su wamp

Warning: mssql_connect() [function.mssql-connect]: Unable to connect to server: (...) Couldn't connect to SQL Server 
  1. ntwdblib.dll è la versione corretta (2000.80.194.0)

  2. non posso usare php_sqlsrv (la distribuzione server è solo Linux, SQLSRV è solo per Windows), anche se usare i SQLSRV posso concludere che le informazioni di accesso è corretto (server, user, password)

  3. ho declassato di nuovo a WampServer 2.1e & php 5.3.1 (alcune persone hanno funzionato come questo)

  4. non ci sono errori sul apache_error.log quando si riavvia il server WAMP

  5. installazione FreeTDS sulla mia macchina si blocca apache

  6. macchina remota utilizza con successo php_mssql.dll (server linux)

Il codice che sto usando:

<?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"); 
?> 

Ora ho intenzione di provare una macchina virtuale Linux, ma sicuramente anche se funziona sarà un problema (lento e senza funzionalità).

Il mio sistema: Windows 7, Wampserver 2.1e, PHP 5.3.1

Che altro posso provare? :(

+0

Puoi mostrare il codice che hai provato? – Tjoene

+0

Certo, ecco il mio codice: $ dbhandle = mssql_connect ($ ip, $ utente, $ pass) o die ("Impossibile connettersi a SQL Server su $ ip"); $ selezionato = mssql_select_db ($ dbname, $ dbhandle) o die ("Impossibile aprire il database sul server SQL: $ ip"); –

+0

Ancora bloccato su questo. In questo momento sto usando una funzione che controlla se il sito web è online. Se è chiamato mssql (che funziona sul server linux), in caso contrario chiama le tabelle false su mysql, che hanno la stessa struttura delle tabelle mssql. Questo funziona ma è tutt'altro che ideale ...: P –

risposta

0

è stato installato MsSQL Perché M WAMP è MySQL non MSSQL

+0

Lo so, ma ho bisogno di lavorare con un mssql db in questo caso, non mysql. Il database è remoto, non è sulla mia macchina. –

0

Impossibile connettersi al server:?. (...) potrebbe non connettersi a SQL Server"

è stato installato alcun modulo driver all'interno di PHP per MS-SQL ??

Oltre ad una VM non è necessariamente lento e informe - almeno funziona :)

MDB2 o DOP migh essere il più adatto per astrarre l'I/O del database.

D: È possibile aprire un terminale su MS-SQL, ad es. Telnet ??

(Questo almeno risolverebbe qualsiasi tipo di problemi di connettività).

potrebbe essere necessario questo modulo qui: PECL odbtp> = 1.1.1 (protocollo di trasporto database aperto)

extension=php_mssql.dll 

^inoltre, cassa phpinfo() una volta, se questa estensione è ancora caricato.

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

Bene - l'installazione di mySQL su Windows non ci sarebbe alcun problema (nel caso in cui avrebbe senso).

+0

Grazie per la risposta. Ho installato l'estensione php_mssql e non ci sono errori segnalati da apache.So anche che non ci sono problemi di connettività perché se uso l'estensione sqlsrv (con le stesse impostazioni) tutto funziona correttamente. –

1

Supponendo che hai cercato di ottenere il installato da qui conducente/estensione: http://www.microsoft.com/en-gb/download/details.aspx?id=20098 e hai cambiato php.ini nella cartella * AMP stack PHP ..; e metti l'estensione mssql nella cartella php/ext ...

dopo diverse ore di ricerca, questa guida mi ha collegato con successo a un database MS SQL. http://webcheatsheet.com/php/connect_mssql_database.php

edit: inoltre la mia classe di connessione prende DB Uname PW e serverIP come parametri del costruttore, e il costruttore chiama la funzione SetCON(), in modo che quando l'oggetto viene creato il collegamento è troppo. allora posso chiamare query sul collegamento oggetto in uno stile 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)); 
    } 

e poi questo è necessario per accedere alla connessione creata

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

actualy di default WampServer non sono dotati di php_mssql. dll l'estensione è fatta su php_pdo_mssql o php_dblib. provata su x64 WampServer 2 PHP 5.3.13

  • Utilizzando php_pdo_mssql

    1. Installare WampServer
    2. Attiva php_pdo_mssql
    3. Attiva php_mssql
    4. copia ntwdblib.dll a bin/php/php {versione}/ext/e bin/apache/{versione}/bin
    5. riavviare tutti i servizi
  • Uso php_dblib

    1. anziché php_pdo_mssql attivare php_dblib.

Attenzione non si attiva sia php_pdo_mssql e php_dblib.

Su diverse versioni di php wampserver funziona diverso su 5.3.1 prima soluzione ha funzionato per me, ma su 5.3.13 secondi.