ads

วันพุธที่ 31 กรกฎาคม พ.ศ. 2556

ลง PHP-MSSQL on CentOS 6

ลง PHP-MSSQL on CentOS 6

เดิมที่เคยลงไว้แล้วสำหรับการ compile freetds ใน php แบบ manual compile เอง
แต่อันนี้มาแนะนำสำหรับ server บางที่ใช้การ ลงแบบ yum install ก็จะต่างกันไปขั้นตอนน้อยลง  แต่ขึ้นอยู่กับว่า mirror ที่ใช้ด้วย

# rpm -ivh http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
โหลด remi.repo ที่มี freetds

# cd /etc/yum.repos.d/
# wget http://rpms.famillecollet.com/enterprise/remi.repo
# yum install freetds freetds-devel

Enable php-mssql ขึ้นมา
# yum install --enablerepo=remi php-mssql

แก้ไขไฟล์ configure freetds  /etc/freedts.conf

[global]
        # TDS protocol version
        tds version = 7.2
        dump file = /var/log/freetds.log
        dump file append = yes
        text size = 64512

[MSSQL]
        host = 10.66.9.11 ( ip เครือง database )
        port = 1433
        tds version = 7.2

tds version ตรงนี้ต้องตรวจสอบว่าที่เราใช้อยู่เป็น version ได ในที่นี้ใช้ sql server 2008 ใช้เป็น protocal tds version 7.2
เวอร์ชั่นอื่นๆ ตรวจสอบได้ที่ http://freetds.schemamania.org/userguide/choosingtdsprotocol.htm


แล้วทำการ restart apache สักรอบ

ตรวจสอบว่า php มี mobule ต่างรองรับ msslq แล้วหรือยัง

# php -i | grep mssql

อ้างถึง
/etc/php.d/mssql.ini,
mssql
mssql.allow_persistent => On => On
mssql.batchsize => 0 => 0
mssql.charset => no value => no value
mssql.compatability_mode => Off => Off
mssql.connect_timeout => 5 => 5
mssql.datetimeconvert => On => On
mssql.max_links => Unlimited => Unlimited
mssql.max_persistent => Unlimited => Unlimited
mssql.max_procs => Unlimited => Unlimited
mssql.min_error_severity => 10 => 10
mssql.min_message_severity => 10 => 10
mssql.secure_connection => Off => Off
mssql.textlimit => Server default => Server default
mssql.textsize => Server default => Server default
mssql.timeout => 60 => 60

แสดงว่า module ต่างๆ มาครบแล้ว


คำสั่ง ทดสอบ แบบ command line สำหรับการลง freetds ในส่วน version ต้องตรวจสอบว่า Database ที่เราใช้เป็น version ได
ในที่นี้เป็น sql server 2008 ซึ่งจะเป็น TDS version 7.2

# TDSVER=7.2 tsql -H 10.66.9.11 -p 1433 -U User_name
Password:
ใส่พาสเวิร์ดที่ใช้

locale is "en_US.UTF-8"
locale charset is "UTF-8"
using default charset "UTF-8"
Error 100 (severity 11):
        unrecognized msgno

แล้วทดสอบการรัน query ตัวอย่างเป็นการเรียกให้ดึงค่าเวลาวันเวลาในปัจจุบัน

1> select convert( varchar(30), getdate(), 120 ) as Now
2> go
Enter

Now
2013-06-11 10:48:52
(1 row affected)
1>

ตอบค่ามาได้ถูกต้อง


ทดลองสร้าง file php มาไฟล์หนึ่ง user - password ที่ใช้แล้วใส่ ค่าเพื่อดึงข้อมูล
<?php
error_reporting(E_ALL);
echo "<pre>\n";
$DB_HOST = "10.66.9.11:1433";
$DB_USER = "userofdatabase";
$DB_PASSWORD = "password";
$DB_DBNAME = "DATABASE_NAME";

$db = mssql_connect ($DB_HOST,$DB_USER,$DB_PASSWORD) or die("\nCan't connect to database server: ".$DB_HOST);
mssql_select_db($DB_DBNAME, $db) or die("\nCan't select database name: ".$DB_DBNAME);

$sql = "
        sp_who
";

$rs = mssql_query($sql, $db) or die("SQL ERROR: \n".$sql);

echo "<pre>\n";
while($row=mssql_fetch_assoc($rs)){
        print_r($row);
}
echo "</pre>\n";
mssql_close($db);

?>

แสดงค่าออกมาได้ถูกต้องแสดงว่าทำงานได้ครบ

ไม่มีความคิดเห็น:

แสดงความคิดเห็น