Php7.1 + sqlsrv-vel kapcsolódás MSSQL szerverhez
2022-08-06T17:13:28+02:00
2022-08-31T10:14:51+02:00
2022-09-12T14:55:36+02:00
huno
Sziasztok!

Külső webtárhelyről MSSQL szerverhez szeretnék kapcsolódni.
A webtárhely beállításai sem biztos,hogy teljesen jók.

A webtárhelyen 7.1-es PHP van, sqlsrv engedélyezve.
A php.ini fájlban nemtudom kell e beállítanom valamit.

A Szervert amihez kapcsolódni akarok ipcím utján érem el, a 1433 -as port nyitva van.
Az alábbi kódot :1433 nélkül is megpróbáltam.
$serverName = "ipcím:1433\SQLEXPRESS"; //serverName\instanceName, portNumber (default is 1433) $connectionInfo = array( "Database"=>"adatbázisnév", "UID"=>"felhasználó", "PWD"=>"jelszó"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn ) { echo "Connection established.<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); }
A hiba amit visszadob:
Connection could not be established.
This extension requires the Microsoft ODBC Driver for SQL Server. Access the following URL to download the ODBC Driver for SQL Server for x64

A hibaüzenet kiadott egy linket is, ahonnan egy ODBC driver-t töltöttem le azthiszem, aminek a neve 'msodbcsql.msi'.

Amihez nem értek, hogy a php.ini-ben vagy az MSSQL szerveren mit kell beállítani, hogy engedje a kapcsolódást?
Mutasd a teljes hozzászólást!

  • Az említett linken x86-os és x64-es telepítő is van. Az x64-est tetted fel?
    Mutasd a teljes hozzászólást!
  • a php.net ezt mondja, ha instance-hoz csatlakozol:

    <?php $serverName = "serverName\sqlexpress, 1542"; //serverName\instanceName, portNumber (default is 1433) $connectionInfo = array( "Database"=>"dbName", "UID"=>"userName", "PWD"=>"password"); $conn = sqlsrv_connect( $serverName, $connectionInfo); if( $conn ) { echo "Connection established.<br />"; }else{ echo "Connection could not be established.<br />"; die( print_r( sqlsrv_errors(), true)); } ?>
    Mutasd a teljes hozzászólást!
  • Ez a PHP valamilyen Windows-on fut?
    Mutasd a teljes hozzászólást!
  • Még nem telepítettem fel semmit, mert nem értek egyenlőre hozzá. Mármint nem a telepítéshez nem értek, hanem hogy a MSSQL szerverhez még kell e telepítenem ezt a 'msodbcsql.msi' fájlt?

    Az x64-est töltöttem le az MSSQL szerver (vagyis adatbázis amihez kapcsolódni akarok win10-en van.)
    Mutasd a teljes hozzászólást!
  • Előre is bocsánatot kérek, a kérdést nem értem. 

    A PHP ahol futtatni akarom a kódot, ahonnan kapcsolódni szeretnék az MSSQL-hez, az egy webtárhelyen van, tehát nem localhost. A webtárhelyen talán nem windows van.
    Mutasd a teljes hozzászólást!
  • Gondolom a por tmiatt másoltad be a kódot. A szerveren a 1433-as portot nyitottam meg, a 1542 nemtudom milyen port. Vagy nem jól írtam mert vessző kell : helyett?
    Mutasd a teljes hozzászólást!
  • Elvileg ezen kívül más nem fog kelleni. Telepítsd fel és nézzük meg, mi történik!
    Mutasd a teljes hozzászólást!
  • Akkor a webtárhely üzemeltetőjéhez kell továbbítanod ezt az üzenetet:
    This extension requires the Microsoft ODBC Driver for SQL Server.
    Mutasd a teljes hozzászólást!
  • Remélem nem értettem félre a problémádat, de ez több lépésből áll. Tömören írom csak le

    Én php8.1 és 2019 mssqlt használok, de localhoston mind a kettőt

    Neked a lépéseid a következőek lennének elméletileg localhost és külső adatbázis esetén

    (Tudom, hogy nem ez az alap kérdés)

    0.) Szolgáltatást leállítani. (apache, iss, nginx, etc.)

    1.) Le kell szedni a microsoft oldaláról a drivereket:

    2.) Meg kell keresni, hogy melyik a jó verzió neked. (x32 vagy x64; ts vagy nts)

    3.) Az így megtalált fájlt át kell másolni a php\ext\ mappa alá.

    4.) php/php.ini fájlba kiterjesztésekhez felveszed a két dll-t.
    /*
    dll ként írod hozzá: 
    extension=curl ;extension=ffi ;extension=ftp extension=pdo_mysql ;extension=pdo_oci ;extension=pdo_odbc extension=pdo_sqlite extension=php_sqlsrv_81_ts_x64.dll extension=php_pdo_sqlsrv_81_ts_x64.dll ;extension=xsl //; = kikapcsolva (bérelt szerveren néha nagyon sok mindent kikapcsolnak)
    */

    5.) Én esetemben az sql express felteszi automatikusan az  ODBC Driver-t, de ha a külső szervert akarod elérni, akkor azt fel kell telepíteni a szerverre amelyiken a php kiszolgáló fút. 

    6.) Újraindítod a szolgáltatást

    Az sajnos ezzel a baj, hogy amikor webtárhelyet válaszól érdemes megérdeklődni, hogy php alól elérhető-e külső mssql szerver. Véleményem szerint az esetek 90%-ában azt fogják mondani, hogy NEM.... (Sok olyan szolgáltató van amelyiknél fel van tűntetve, hogy PHP, .NET, és mellé az MySQL, MsSQL, PgSQL, de néha még az apróbetűs részbe sem írják bele, hogy PHP alól az soha az életbe nem fogod elérni a külső MSSQL szervereket, csak .NET alól.
    Ha úgy kezdi a szever, hogy "download the ODBC Driver", akkor az sajnos már régen rosszat jelent. (MsSQL-t általában support miatt nagyobb cégek használnak. Nem éri meg anyagilag legtöbb szolgáltatónak Hosting csomagba beletenni, mert megoldható szerverbérléssel is, persze '
    kicsit'
    drágábban...)
    Mutasd a teljes hozzászólást!
  • Szia,

    köszönöm a választ. 

    A leírtak nem hangzanak jól, még futok pár kört,hátha mégis sikerül.
    Mutasd a teljes hozzászólást!
abcd