如何解决DirectAdmin、多个 PHP 版本和 MSSQL
过去,我使用 MSsql 函数建立了与 MSsql 的连接。我有一个运行 PHP 5.5 的旧站点(客户端拒绝升级),遗憾的是这些功能丢失了(它可以正常工作,但现在不能)
我尝试使用下面的脚本重新安装,但在执行 PHP -m
时仍然无法显示模块
Download FreeTDS
Latest stable version can be found here http://www.ibiblio.org/pub/Linux/ALPHA/freetds/stable/ (
3. Configure and install FreeTDS
Uncompress and cd to the respective folder:
./configure --prefix=/usr/local/freetds
make
make install
4. PHP configuration
Edit the PHP configuration file.
"/usr/local/directadmin/custombuild/configure/ap2/configure.PHP55"
Add this line: "--with mssql=/usr/local/freetds\ "
Go to custombuild:
./build clean
./build PHP_expert 5.5 PHP-fpm
[root@... domains]# PHP -m
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
ereg
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mcrypt
mhash
MysqL
MysqLi
MysqLnd
openssl
pcre
PDO
pdo_MysqL
pdo_sqlite
Phar
posix
Reflection
session
SimpleXML
soap
sockets
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
xsl
zip
zlib
[Zend Modules]
[root@... domains]#
有什么建议吗?
解决方法
我记得 mssql
函数何时消亡。这是悲伤的一天,让我很头疼。
我发现最简单的转换是移至 sqlsrv
函数。它们的语法和结构几乎相同,只需要进行一些调整。幸运的是,从 IDE 进行文件范围的搜索应该可以很容易地找到任何 mssql
命令,并就地“转换”它们。
连接函数有点不同,因为它使用参数数组来指定数据库、用户名、密码等,但这些都有详细的文档说明,您只需要在建立连接的地方更改它们(这通常只在一个地方编码)。但大部分操作功能基本相同。
需要注意的一点是,sqlsrv
比 mssql
更与指针相关。您可以使用提供的函数(以及它们在 php.net 上的示例)进行调整以推进记录或,如果您只添加 { {1}} 常量作为 SQLSRV_FETCH_ASSOC
的第二个参数。这将导致它模拟旧行为,并消除使用指针相关函数的需要。
sqlsrv_fetch_array
当我转换自己的代码时,这大大简化了任务。后来,我重建了我的数据库类以使用 $connection = sqlsrv_connect( $server,$connection_info_array );
$results = sqlsrv_query( $connection,$your_query );
while ( $row = sqlsrv_fetch_array( $results,SQLSRV_FETCH_ASSOC ) ) {
var_dump( $row );
}
,但临时迁移到 PDO
节省了我当时没有的大量时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。