我忽略了这个问题Linux - PHP 7.0 and MSSQL (Microsoft SQL)
我确信MS确实在此页面中告诉我要做的事情 installing-the-drivers-on-red-hat-7 但是,当输入“ php -v”时,我会提示错误:
PHP警告:PHP启动:无法加载动态库 'pdo_sqlsrv.so'(尝试:/usr/lib64/php/modules/pdo_sqlsrv.so (/usr/lib64/php/modules/pdo_sqlsrv.so:未定义符号: php_pdo_register_driver),/ usr / lib64 / php / modules / pdo_sqlsrv.so.so (/usr/lib64/php/modules/pdo_sqlsrv.so.so:无法打开共享对象 文件:没有这样的文件或目录)),位于第0行的未知
PHP 7.2.10 (CLI)(内置:2018年9月15日07:10:58)(NTS)版权所有(c)1997-2018 PHP Group Zend Engine v3.2.0,版权所有(c)1998-2018 Zend 技术领域 Zend OPcache v7.2.10,版权所有(c)1999-2018,由Zend提供 技术
我从不修改php.ini,
[user @ tssvr php.d] $ pwd
/etc/php.d
[user @ tssvr php.d] $ ls
20-sqlsrv.ini ctype.ini fileinfo.ini gmp.ini mbstring.ini pdo.ini shmop.ini tokenizer.ini xmlwriter.ini 30-pdo_sqlsrv.ini curl.ini ftp.ini iconv.ini mysqli.ini pdo_mysql.ini simplexml.ini xml.ini xsl.ini bz2.ini dom.ini gd.ini intl.ini opcache-default.blacklist pdo_sqlite.ini sockets.ini xmlreader.ini zip.ini calendar.ini exif.ini gettext.ini json.ini opcache.ini phar.ini sqlite3.ini xml_wddx.ini
[user @ tssvr php.d] $ cat 20-sqlsrv.ini
extension = sqlsrv.so
[user @ tssvr php.d] $ cat 30-pdo_sqlsrv.ini
extension = pdo_sqlsrv.so
看来sqlsrv.so很好,但是pho_sqlsrv.so不能正常工作,尽管我注意到出现了两个'so':'pdo_sqlsrv.so.so', 有人可以帮我解决这个问题吗,非常感谢。
答案 0 :(得分:1)
加载模块的正确顺序是:
extension=pdo.so
extension=pdo_sqlsrv.so
extension=sqlsrv.so
可以将它们放入一个.ini
文件中,也可以使用编号的.ini
文件。
按字母顺序(默认)加载它们将无效。
答案 1 :(得分:0)
我在 Ubuntu 18.04 和 20.xx 上遇到了同样的问题。我终于让它在 Ubuntu 18.04 上运行了,并且很确定这也可以在 20.xx 上运行。
这适用于 PHP 7.1,因此如果您不使用 7.4 或 8.0,则必须在 pecl 中指定版本。
pecl install sqlsrv-5.7.0preview
pecl install pdo_sqlsrv-5.7.0preview
printf "; priority=20\nextension=sqlsrv.so\n" > /etc/php/7.1/mods-available/sqlsrv.ini
printf "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/7.1/mods-available/pdo_sqlsrv.ini
phpenmod -v 7.1 sqlsrv pdo_sqlsrv
service apache2 restart
让一切正常工作的技巧是 printf 和 phpenmod 命令。您还需要将扩展名添加到 php.ini 文件中。不确定顺序是否真的很重要,但驱动程序似乎没有使用 pecl 安装程序正确安装。
重新启动 apache 后,我现在可以看到 php.ini 中列出了 pdo_sqlsrv,我的 php 应用程序可以连接到本地 Microsoft SQL 服务器。
顺便说一句,我在 Windows 的 WSL2 上进行了这项工作。
答案 2 :(得分:-1)
输入终端linux centos 7:
php --ini
find /etc/php.d/20-pdo.ini
extension=sqlsrv.so extension=pdo_sqlsrv.so
注意:在extension extension=sqlsrv.so , extension=pdo_sqlsrv.so
中评论/etc/php.ini
php -m
-您会看到已加载的模块