In CentOS 5.4 Linux, PHP (FastCGI) needs to connect to the SQL Server 2000 database of the relevant department and configure the extended FreeTDS extension.
1. Compile and install FreeTDS
- mkdir -p /data0/software/
- cd /data0/software/
- wget ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
- tar zxvf freetds-stable.tgz
- cd freetds-0.82/
- ./configure --prefix=/usr/local/webserver/freetds --with-tdsver=8.0 --enable-msdblib
- make && make install
- cd ../
-
- echo "/usr/local/webserver/freetds/lib/" > /etc/ld.so.conf.d/freetds.conf
- ln -s /usr/local/webserver/freetds/lib/libsybdb.so.5.0.0 /usr/local/webserver/freetds/lib/libsybdb.so.4
- /sbin/ldconfig
-
- rm -f /usr/local/webserver/freetds/etc/freetds.conf
- vi /usr/local/webserver/freetds/etc/freetds.conf
Enter the following content:
Reference
- [global]
- # TDS protocol version
- ; tds version = 4.2
-
- # Whether to write a TDSDUMP file for diagnostic purposes
- # (setting this to /tmp is insecure on a multi-user system)
- ; dump file = /tmp/freetds.log
- ; debug flags = 0xffff
-
- # Command and connection timeouts
- ; timeout = 10
- ; connect timeout = 10
-
- # If you get out-of-memory errors, it may mean that your client
- # is trying to allocate a huge buffer for a TEXT field.
- # Try setting 'text size' to a more reasonable limit
- text size = 64512
-
- host = mssql.yourdomain.com
- port = 1433
- tds version = 8.0
- client charset = UTF-8
2. Compile and install PHP's built-in MSSQL Extension
Enter the local php-5.2.XX source package directory that already exists:
- cd /data0/software/php-5.2.XX/ext/mssql/
- /usr/local/webserver/php/bin/phpize
- ./configure --with-php-config=/usr/local/webserver/php/bin/php-config --with-mssql=/usr/local/webserver/freetds/
- make && make install
3. add mssql. so to the php. ini configuration file.
- vi /usr/local/webserver/php/etc/php.ini
Add a row:
Reference
- extension = "mssql.so"
4. Restart PHP FastCGI.
- /usr/local/webserver/php/sbin/php-fpm restart
5. Test file (test_mssql.php ):
- php
- header("Content-type: text/html; charset=utf-8");
- $msdb=mssql_connect("mssql.yourdomain.com:1433","username","password");
- if (!$msdb) {
- echo "connect sqlserver error";
- exit;
- }
- mssql_select_db("database_name",$msdb);
- $result = mssql_query("SELECT top 5 * FROM table", $msdb);
- while($row = mssql_fetch_array($result)) {
- var_dump($row);
- }
- mssql_free_result($result);
- ?>