เมื่อถามคำถาม
บริษัทของเราได้พัฒนาชุดซอฟต์แวร์บริการข้อความสั้นฝั่ง SP โดยใช้โปรโตคอล SGIP ของ China Unicom เพื่อให้บริการ SMS ของ China Unicom 130 ระบบนี้อยู่ภายใต้ Windows 2000 ฐานข้อมูลใช้ Microsoft SQLServer2000 และทำงานได้ตามปกติมาระยะหนึ่งแล้ว เมื่อเร็ว ๆ นี้เพื่อให้ข้อมูลบางอย่างของผู้ใช้ข้อความสั้นบนเว็บจำเป็นต้องอ่านและเขียนฐานข้อมูล SQL Server จากเว็บ เดิมทีพันธมิตรที่ดีที่สุดของฐานข้อมูล SQL Server ควรเป็นสคริปต์เซิร์ฟเวอร์ Microsoft IIS ASP บริษัทของเราเชื่อมาโดยตลอดว่า IIS+ASP ความเสถียรและความปลอดภัยไม่เป็นที่น่าพอใจ ฉันหวังว่าจะใช้สคริปต์ PHP เพื่ออ่านและเขียน SQL Server บน Linux
วิเคราะห์ปัญหา
เดิมทีไม่มีปัญหากับการอ่านและเขียนสคริปต์ PHP ของ SQL Server เลย โดยสามารถทำงานได้ดีบน Apache สำหรับ windows และ Windows IIS โดยทั่วไปสามารถเชื่อมต่อผ่าน ODBC หรือ SQLServer Client ซึ่งเป็นแบบสำเร็จรูปทั้งหมดได้ ภายใต้ Windows อย่างไรก็ตาม ไม่มี ODBC และ SQLServer Client สำเร็จรูปภายใต้ Linux และเราจำเป็นต้องติดตั้งด้วยตนเอง
แก้ไขปัญหา
1. ซอฟต์แวร์ที่เกี่ยวข้อง
freetds ที่มา: ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/freetds-0.53.tgz
ซอฟต์แวร์นี้สามารถเชื่อมต่อฐานข้อมูล MS SQLServer และ Sybase โดยใช้ Linux และ Unix
2. ขั้นตอนการติดตั้งและการกำหนดค่า
ขั้นตอนที่ 1: คอมไพล์และติดตั้ง freetds:
หลังจากรับ freetds-0.53.tgz
, cp freetds-0.53.tgz /tmp/ (คัดลอกแพ็คเกจ freetds ไปยังไดเร็กทอรี /tmp)
cd /tmp (ป้อนไดเร็กทอรี )
tar zxvf freetds- 0.53.tgz (คลายการบีบอัด)
cd freetds-0.53 (ป้อนไดเร็กทอรีที่คลายการบีบอัด)
./configure –prefix=/usr/local/freetds --with-tdsver=7.0
gmake (สร้าง Makefile ฉันได้ทดสอบแล้ว make ก็สามารถทำได้)
gmake install (การติดตั้ง)
ฉันต้องการพูดบางอย่างเกี่ยวกับการกำหนดค่าด้านบน --prefix=/usr/local/freetds หมายถึงการติดตั้งลงในไดเร็กทอรี /usr/local/freetds 7.0 หมายถึงการติดตั้งเวอร์ชัน tds 7.0 (ปัญหาล่าสุดคือฉันไม่ได้เพิ่มพารามิเตอร์การคอมไพล์นี้และผลลัพธ์ถูกคอมไพล์เป็น 5.0 ตามค่าเริ่มต้น พอร์ตสำหรับ 5.0 ที่จะเชื่อมต่อกับฐานข้อมูลคือ 4000 ไม่ใช่ 1433 ของ SQL Server)
ขั้นตอนที่ 2: คอมไพล์ PHP4./configure ใหม่
[--with-apxs --with-mysql ...] --with-sybase=/usr/local/freetds (โปรดทราบว่าเป็น sybase)
ทำการ
ติดตั้ง
ขั้นตอนที่ 3: กำหนดค่า freetds
vi /usr/local/freetds/etc/freetds.conf
การกำหนดค่าเฉพาะสามารถพบได้ในไฟล์นี้ ตัวอย่างคำอธิบาย
: (การกำหนดค่าทั่วไป)
โฮสต์[sqlserver]
= sql_server_name_or_host_ip (ชื่อเครื่อง SQLServer หรือที่อยู่ IP ของคุณ)
พอร์ต =
เวอร์ชัน 1433 tds = 7.0
ในไฟล์การกำหนดค่านี้ คุณสามารถกำหนดค่าการเข้าสู่ระบบโดเมน Windows หรือการเข้าสู่ระบบบัญชี SQLServer ได้สองวิธี
: กำหนดค่าไฟล์ php.ini
และค้นหา; extension=mssql70.so
ลบ
ความคิดเห็น
ขั้นตอนที่ 5: สร้างการเชื่อมต่อฐานข้อมูลใน php
$link=mssql_connect("sqlserver",$your_username,$your_password) or die (“ไม่สามารถเชื่อมต่อกับฐานข้อมูล”);
echo $link;
เรียกใช้สคริปต์ด้านบนในเบราว์เซอร์ คุณได้รับหมายเลขลิงก์ ยินดีด้วย คุณได้กำหนดค่าแล้ว หาก Call to unknown function: mssql_connect() ปรากฏขึ้น แสดงว่าหมายเหตุ: โปรดอ่านขั้นตอนการติดตั้งและการกำหนดค่าข้างต้นโดยละเอียดเพื่อดูว่าคุณผิดขั้นตอนใด
หมายเหตุ: ชื่อ sqlserver คือพารามิเตอร์โฮสต์ที่กำหนดไว้ใน /usr/local/freetds/etc/freetds.conf หากคุณเขียนที่อยู่ IP ชื่อนั้นก็คือที่อยู่ IP
สำหรับการดำเนินการฐานข้อมูลอื่น ๆ โปรดดูที่ฟังก์ชัน mssql ที่เกี่ยวข้อง
โปรดทราบว่าคำสั่ง sql ไม่รองรับภาษาจีน !!!
ขั้นตอนที่ 6: การดีบัก
โปรดค้นหาในไฟล์กำหนดค่า freetds /freetds.log ลบเครื่องหมายอัฒภาคด้านหน้า รันสคริปต์ทดสอบอีกครั้ง และตรวจสอบไฟล์ /tmp/freetds.log ซึ่งสามารถบอกข้อมูลข้อผิดพลาดมากมายแก่คุณเพื่อช่วยคุณแก้ไขปัญหา
(e129)