Home >Backend Development >PHP Tutorial >How to connect SQL Server with PHP under Linux_PHP Tutorial
Ask a question
We did a very strange project a few days ago. Our company developed a set of SP-side short message service software based on China Unicom's SGIP protocol to provide China Unicom 130 SMS service. This system is under Windows 2000. The database uses Microsoft SQLServer2000 and has been running normally for some time. Recently, in order to provide some information of short message users on the WEB, it is necessary to read and write SQLServerdatabase from the WEB. Originally, SQLServerdatabase should be Microsoft IIS ASP server-side script, but our company has always believed that IIS+ASP is more stable and The security is not satisfactory. I hope to use PHP script to read and write SQL Server under Linux.
Analyze the problem
Originally PHP scripts read and write SQL Server without any problem. It can work very well under Apache for windows and Windows IIS. Generally, it can be done through ODBC or SQL Server. Client connection, this is all ready-made under Windows. However, there are no ready-made ODBC and SQLServer Client under Linux and we need to install them ourselves.
Solve the problem
1. Related software
freetds Source: ftp://ftp.ibiblio.org/pub/Linux/ALPHA/freetds/freetds-0.53.tgz
This software can connect MS SQLServer and Sybasedatabase using Linux and Unix.
2. Installation and configuration steps
Step one: Compile and install freetds:
After getting freetds-0.53.tgz
cp freetds-0.53.tgz /tmp/. (Copy the freetds package to the /tmp directory)
cd /tmp (enter directory)
tar zxvf freetds-0.53.tgz (unzip)
cd freetds-0.53 (enter the unzipped directory)
./configure –prefix=/usr/local/freetds --with-tdsver=7.0
gmake (generate Makefile, I have tested it, make can also do it)
gmake install (installation)
I want to say something about the configure above. --prefix=/usr/local/freetds refers to installing into the directory /usr/local/freetds, and --with-tdsver=7.0 refers to installing tds 7.0 Version (In the end, I did not add this compilation parameter, and the result was compiled to 5.0 by default. The port for 5.0 to connect to the database is 4000, not 1433 of SQLServer)
Step 2: RecompilePHP4
./configure [--with-apxs --with-mysql...] --with-sybase=/usr/local/freetds (please note it is sybase)
make
make install
Step 3: Configure freetds
vi /usr/local/freetds/etc/freetds.conf
For specific configuration, see the instructions in this file
Example: (Typical configuration)
[sqlserver]
host = sql_server_name_or_host_ip (your SQLServer machine name or IP address)
port = 1433
tds version = 7.0
In this configuration file, you can configure two methods of Windows domain login or SQLServer account login
Step 4: ConfigurePHP.ini file
Found ;extension=mssql70.so
Remove the comment; to
extension=mssql70.so
Step 5: Establish database connection in PHP
$link=mssql_connect("sqlserver",$your_username,$your_pass word) or die (“can't Connect to Database”);
echo $link;
Run the above script in the browser. If you get a link number, congratulations, you have configured it. If Call to undefined function: mssql_connect() appears, it means that you should carefully read the installation and configuration process above. Which step is wrong.
Note: The sqlserver name is the host parameter defined in /usr/local/freetds/etc/freetds.conf. If you write the IP address, it is the IP address.
Others DatabaseOperation reference related mssql functions Note that Chinese is not supported in sql statements!!! Step 6: Debugging If you cannot connect, please find the line "dump file = /tmp/freetds.log" in the freetds configuration file. Comment out the semicolon in front of it, then execute the test script and check /tmp/freetds. log file, it can tell you a lot of error information to help you troubleshoot problems.