Results 1 to 9 of 9

Thread: MSSQL support in PHP

  1. #1

    Unhappy MSSQL support in PHP

    Hello to all!
    I have been using Suse since version 6, now I installed 11.4 64bit - great distro, but still have no PHP5-MSSQL support. Why is that? FC supports it, why not Suse?
    Is there, maybe, a current 64bit PHP5-MSSQL RPM from custom repository?

    Workaround:
    Is there another way (or even different ways?) to connect to MSSQL server from PHP and if yes, please can someone send step by step instructions.

    Thank you in advance!

  2. #2
    Join Date
    Jul 2009
    Location
    Montreal, Québec
    Posts
    833

    Default Re : MSSQL support in PHP

    Hi,

    here's some reading for you : SDB:Linux Apache MySQL PHP - openSUSE

  3. #3

    Default Re: Re : MSSQL support in PHP

    Thanx, but i need Mico$oft MS SQL, MySQL works fine!

  4. #4

    Default Re: MSSQL support in PHP

    On 05/10/2011 01:36 PM, dukiii wrote:
    >
    > Thanx, but i need Mico$oft MS SQL, MySQL works fine!
    >
    >

    Maybe this will help?
    Code:
    http://www.easysoft.com/developer/languages/php/sql_server_unix_tutorial.html
    --
    Kevin Miller
    Juneau, Alaska
    http://www.alaska.net/~atftb
    "In the history of the world, no one has ever washed a rented car."
    - Lawrence Summers

  5. #5
    Join Date
    Jun 2008
    Location
    San Diego, Ca, USA
    Posts
    11,475
    Blog Entries
    2

    Default Re: MSSQL support in PHP

    If a PHP / MS SQL Database connector isn't available in the OSS Repository, you still shouldn't be SOL.

    Based on the following PHP website recommendation
    PHP: Requirements - Manual

    You can then do a search on software.opensuse.org to see if someone has built an unofficial (or official) package. This is the result for the recommended FreeTDS Database Connection libary for openSUSE 11.4

    software.opensuse.org: Search Results

    HTH,
    Tony

  6. #6

    Default Re: MSSQL support in PHP

    tsu2 thank you for the link.
    I already had FreeTDS working, but this is newer version.
    OK, I have fonud a solution. Here it is - for other users like I am...

    To connect to MS SQL server that runs on Windoz, from PHP in openSuse 11.4 you need:
    PHP5 (use Yast to install)
    unixODBC (use Yast to install)
    freetds (use Yast to install)
    mssql.so

    so the whole story is to find one file - mssql.so, and put it in right place with minor configuration change.

    mssql.so has to be the same version as PHP5 you use. openSuse 11.4 out of the box PHP5 version is 5.3.6.

    Step 1 - obtain mssql.so
    Version a) - compile your own mssql.so

    Install the php5-devel package using Yast. It contains the phpize command.

    On php.net find and download PHP source with the same version you have on your Linux Box.
    PHP: Downloads

    Unpack the downloaded php source file, and cd to the ext/mssql directory within the resulting directory tree.

    Run the following commands to compile just the mssql module:

    Code:
    phpize
    ./configure
    make
    now you should have a file named mssql.so

    This didn't worked for me. I had problem during ./configure:
    configure: error: Cannot find FreeTDS in known installation directories
    and I couldn't find a solution. So I went to

    Version b) - find your own mssql.so, compiled!

    Use RPM BONE NET and find php5-mssql 5.3.6 for Fedora Core 9 (this is 64 bit suse 11.4 so i used 64 bit Fedora Core version of mssql). Most of times Fedora Core has RPM that works fine on openSuse.

    RPM Search Fedora�9 php-mssql-5.3.6-3.fc9.remi.x86_64.rpm

    Save your php-mssql-5.3.6-3.fc9.remi.x86_64.rpm and open a package (like you woud do with some zip arcive). Do not install it!

    I'm using krusader for that. Just select rpm file and press enter to navigate inside it.
    Find mssql.so from php-mssql-5.3.6-3.fc9.remi.x86_64.rpm/usr/lib64/php/modules and extract it to your home directory.

    Now you have famous mssql.so file!


    Step 2 - put mssql.so in motion:

    move mssql.so to /usr/lib64/php5/extensions.

    Now move to the php5 configuration directory and allow PHP to include your new extension:
    Code:
    cd /etc/php5/conf.d
    cp mysql.ini mssql.ini
    Now edit the mssql.ini file and change mysql.so to mssql.so.

    Restart Apache.

    Step 3 - Test

    a) Test if freeTDS works
    b) Test if mssql.so works

    a) Test if freeTDS works:
    Let's say you have Windoz MS SQL Box on 192.168.1.33, and MS SQL instance named FASTCAR.

    In Windows go to:
    SQL Server Configuration Manager -> Protocols for FASTCAR.
    -> TCP/IP -> [tab] IP Addresses

    Look at port number in: TCP Dynamic Ports.
    Remember that number.
    Let's say it is 1040

    edit /etc/freetds.conf
    and change last section to this:
    ---------------------------
    Code:
    # A typical Microsoft server
    [MSSQL_VBOX]
            #host = ntmachine.domain.com
            #port = 1433
            host = 192.168.1.33
            port = 1040
            tds version = 8.2
            client charset = UTF-8
    ---------------------------

    Save configuration.

    Testing from console:
    a) ping to see if you are connected to Windows PC
    b) telnet to see if port 1040 is open on Windows PC for MS SQL connection
    c) tsql to see if freeTDS works
    d) tsql to see if freeTDS automatic configuration from /ets/freetds.conf works

    Code:
    # ping 192.168.1.33
    Code:
    # telnet 192.168.1.33 1040
    Trying 192.168.1.33...
    Connected to 192.168.1.33.
    Escape character is '^]'.
    Code:
    # tsql -H 192.168.1.33 -p 1040 -U my_mssql_username
    locale is "en_US.UTF-8"
    locale charset is "UTF-8"
    Password: my_mssql_password
    1>
    Code:
    # tsql -S MSSQL_VBOX -U my_mssql_username
    locale is "en_US.UTF-8"
    locale charset is "UTF-8"
    Password: my_mssql_password
    1>
    If it works - freeTDS is fine.

    b) Test if mssql.so works
    make test.php file:
    Code:
    <?php
    //MSSQL_VBOX is section from /etc/freetds.conf
    $link = mssql_connect("MSSQL_VBOX", "my_mssql_username", "my_mssql_password");
    if (!$link) {
        die("Something went wrong while connecting to MSSQL");
    }
    ?>
    V2 - do not use section from /etc/freetds.conf

    Code:
    <?php
    $link = mssql_connect(" 192.168.1.33\\FASTCAR", "my_mssql_username", "my_mssql_password");
    if (!$link) {
        die("Something went wrong while connecting to MSSQL");
    }
    ?>
    Thanks to rwidmer ( FreeTDS and PHP with MSSQL Support Built In, Please? )

    Now I have new problem, and need your help. Again.
    When I make a query and select some rows - everything works fine if characters in MS SQL tables are on latin, but when I select rows from table with cyrillic characters I get question marks:

    Here is my latin table in browser:
    Code:
    USR_METAD_ACTION_DETAILS
    ID_METAD_JOURNAL 	GROUP_NR 	COLUMN_NAME 	COLUMN_VALUE 	IND_PK 	TABLE_NAME
    1297 	4 	FIRST_NAME 	Joe 	0 	USR
    and here is a cyrillic one:
    Code:
    48 	? ?????? ?????? - ?? ???????? ????? 	0
    249 	?? ???????? ???????? 	0
    250 	?? ?????????? ???????? 	0
    251 	? ?????? ?????? - ?? ?????????? ????? 	0
    252 	?????????? ?????????? ?????? 	0
    253 	?????????? ??????? ?????? 	0
    254 	?? ??????? 	0
    255 	????????? 	0
    In Suse 11.2 everything worked just fine with settings like described above.
    Please help.
    Thank you!

  7. #7
    Join Date
    Jun 2008
    Location
    San Diego, Ca, USA
    Posts
    11,475
    Blog Entries
    2

    Default Re: MSSQL support in PHP

    Without inspecting your setup more closely (BTW - congrats on discovering your procedure, then posting results), usually the last problem you describe is created by not enabling UTF-8 aka "unicode" encoding in all places... Co-incidentally similar to the banner ad on today's Forums that announce "UTF-8 by default" which opens up the possibility for multi-language/character support in the Forums.

    I assume it's a setting in the PHP config somewhere...

    HTH,
    Tony

  8. #8

    Default Re: MSSQL support in PHP

    And, finally, there it is!

    edit /etc/freetds.conf
    and change
    tds version = 8.2
    to
    tds version = 8.0

    so section should look like this:
    Code:
    ---------------------------
    # A typical Microsoft server
    [MSSQL_VBOX]
            host = 192.168.1.33
            port = 1040
            tds version = 8.0
            client charset = UTF-8
    Now, you should see cyrillic characters when connecting to MS SQL Express 2005.

    Thanx to all people who helped!

  9. #9

    Default Re: MSSQL support in PHP

    Request for admins:
    Please change the title from
    MSSQL support in PHP
    to
    MSSQL support in PHP for OpenSuse 11.4 [SOLVED]

    Thank you.

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •