Avatar billede Npinv Nybegynder
27. maj 2011 - 14:22 Der er 6 kommentarer og
1 løsning

Problemer med forbindelse efter skift til Apache

Jeg har nogen PHP sider, som tidligere har kørt på en IIS 6.0. Men den er hamrende ustabil, og går ned hele tiden.
Jeg har derfor kastet mig ud i at installere en Apacheserver i stedet for...
Det er indtil videre gået meget godt. Apache kører, og det samme gør PHP. Problemer er, at jeg ikke kan få forbindelse til databasen!

Jeg får denne fejl:
string(4) "zeus" array(3) { ["UID"]=> string(2) "sa" ["PWD"]=> string(8) "xxxxxx" ["Database"]=> string(4) "salg" }
Connection could not be established...

Jeg har installeret både MSSQL og ODBC pakkerne på serveren.
Jeg kan godt telnette til serverens IP på den port den skal bruge.
Jeg kan pinge "zeus" - da den er sat op i /etc/hosts.

brugernavn og pass er korrekt, det virker på serveren med IIS.

Koden jeg bruger til at forbinde:
<?php
function DB_Conn_Zeus ($dbname, $tsql)
    {
        $serverName        = "Zeus";
        $uid             = "sa";
        $pwd             = "xxxxxx";
       
        $connectionInfo = array("UID" => $uid, "PWD" => $pwd, "Database"=>$dbname);
       
        //$conn = odbc_connect( $serverName, $uid, $pwd
            $conn=odbc_connect($serverName,$uid,$pwd);
           
       
        if( $conn )
        {
            //echo "Connection established.<br />".$dbname."<br>";
        }
        else
        {
            //var_dump( $serverName, $connectionInfo);
            echo "<br />Connection could not be established.<br />";
            die( print_r( odbc_errors(), true));
        }
        If ($dbname == "news") {
           
            $stmt = odbc_exec( $conn, $tsql);
           
        }
        else {
            $stmt = odbc_exec( $conn, $dbname."..".$tsql);
        }
        if( $stmt === false )
        {
            echo "Error in query preparation/execution.<br />";
            die( print_r( $dbname."..".$tsql, true));
        }
        $i=0; //Used as the $objID in the Product class constructor.
        // Make and array for results
        $list = array();
       
        //var_dump($tsql);
        /* Retrieve each row as a PHP object and display the results.*/
        while( $obj = odbc_fetch_array( $stmt))
        {
       
            $list[] = $obj;
            //var_dump($list);
        }
       
        /* Close the connection. */
        odbc_close($conn);
       
        // Return the list of objects
        //echo 'returning results';
        //var_dump($list);
        return $list;
    }
?>

Nogen der kan komme med et guldkorn?
Skal SQL serveren registreres et eller andet sted i linux serveren før det virker?
Avatar billede Syska Mester
27. maj 2011 - 14:56 #1
Har du enabled TCP/IP på SQL serveren så der kan forbindes udefra ?
Avatar billede Npinv Nybegynder
27. maj 2011 - 15:02 #2
Ja, der bliver forbundet til den fra mange andre servere. Koden her virkede også da jeg kørte på en server med IIS. Jeg tænker om den måske forbinder med en forkert port eller lign.
Den skal forbinde på port 1001 - men det er ikke defineret nogen steder på apacheserveren. Hvor skal man fortælle den det?
Avatar billede Npinv Nybegynder
27. maj 2011 - 15:03 #3
i min /etc/hosts har jeg skrevet følgende:
10.0.0.10    zeus
Avatar billede Syska Mester
27. maj 2011 - 15:36 #4
Pas ... jeg har en FreeBSD 8.2 som forbinder til en MSSQL, men der bruger jeg: http://dk.php.net/manual/en/book.mssql.php

Altså et native api til en MSSQL.

Alt efter hvor meget kode du har ... og hvor generic det er, så ville jeg nok bruge overstående, når du alligevel er ved at rode med det.

mvh
Avatar billede Npinv Nybegynder
31. maj 2011 - 10:55 #5
Skal database serveren ikke registreres på en eller anden måde, så den ved at den skal bruge en anden port end normalt?
På IIS'en er det sat op under SQL Server Configuration Manager.
Avatar billede Syska Mester
31. maj 2011 - 14:35 #6
Som sagt pas ... jeg har kun brugt native MSSQL API fra php.

De skriver om odbc's dsn name:
The database source name for the connection. Alternatively, a DSN-less connection string can be used.

// Microsoft SQL Server using the SQL Native Client 10.0 ODBC Driver - allows connection to SQL 7, 2000, 2005 and 2008
$connection = odbc_connect("Driver={SQL Server Native Client 10.0};Server=$server;Database=$database;", $user, $password);

Men ... som det står skrevet, er jeg lidt i tvivl om hvordan det vil virke på en Apache. ( Jeg antager du er på Linux/Unix )

Efter jeg har googled lidt omkring problemet, så vil jeg løbe hurtigt væk og bruge native API. Dermed er du altid sikker på det virker på både Windows og Linux. Dermed tror jeg også det performer bedre.
Avatar billede Npinv Nybegynder
20. oktober 2011 - 00:46 #7
Lukker denne. Jeg fik det ikke rigtig til at virker, så det må køre på en windows server.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester