CentOS中php访问mssql注意事项

安装完CentOS后,如果需要让php支持访问mssql,需要单独下载安装freetds和php-mssql模块,因为php从3.3开始不再内置mssql模块了。

推荐一个下载rpm安装包的站点:http://pkgs.org/

http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/

freetds是mssql的驱动,用来和mssql通讯;
php-mssql是php的扩展,是php和freetds中间的桥梁;

一切都安装好之后,使用mssql_pconnect连接mssql服务器时,可能会连接不上,检查httpd的error log,可能会发现”PHP Warning: mssql_pconnect(): Unable to connect to server: …”的错误。

这个可能是不少朋友遇到的问题,我谷歌+百度了两天都没有找到能解决我的问题的方法(本人E文还可以,所以说老外朋友也没有解决我的问题),奇怪的是我装了两台服务器,一台能访问,另一台不能访问;冥思苦想了好久好久,对比了两台服务器的rpm包、so文件,都没发现可疑之处,后来想到了一点,马上尝试(前面都是废话,到重点了!):

记得OK的那台服务器我在配置时修改过SELINUX的参数,由缺省的enforcing修改为permissive,马上把不OK的这台服务器也这样改,改完之后测试,通过了!

具体的原理搞不清楚,我的道行太浅了!大概猜测:强制安全时,限制了Apache或php或freetds直接访问一些非常规端口,如1433,随意安全时,则不作限制;

教训是深刻的,但愿能帮到一些遇到相同问题的朋友,但本人E文又不是太OK,所以帮不到老外朋友了!