升级到php 8.1后,找不到sqlsrv pdo驱动

问题描述 投票:0回答:3

升级到 php 8.1 (Linux PHP) 后,Azure webapp 似乎没有 MS SQL 的驱动程序。 PHP 7.4 没问题。

按照本指南 (https://learn.microsoft.com/en-us/azure/app-service/deploy-local-git?tabs=cli),构建和配置 Azure App 服务的步骤是: az appservice plan create -g rg-MyResourceG -n MyPlan --is-linux az webapp create -g rg-MyResource --plan MyPlan --name MyApp --% --runtime "PHP|7.4" --deployment-local-git 按照本指南更改为 PHP 8.1:https://github.com/Azure/app-service-linux-docs/blob/master/Runtime_Support/php_support.md az webapp config appsettings set --name MyApp --resource-group MyResourceG --settings DEPLOYMENT_BRANCH='main' 在我的本地服务器上:php artisan key:generate --show az webapp config appsettings set --name Glados9L --resource-group rg-blueprism-tst --settings APP_KEY="最后一条命令的输出" APP_DEBUG="true" git 远程添加 glados9l https://[email protected]/MyApp.git git push glados9l main ………… 远程:在 223 秒内完成。 偏僻的: 远程:删除现有的清单文件 远程:创建清单文件... 远程:已创建清单文件。 远程:将 .ostype 复制到清单输出目录。 偏僻的: 远程:在 457 秒内完成。 远程:正在运行部署后命令... 偏僻的: 远程:生成 Oryx 构建的摘要 远程:解析构建日志 远程:找到 0 个问题 偏僻的: 远程:构建摘要: 远程:=============== 远程:错误 (0) 远程:警告 (0) 偏僻的: 远程:触发回收(禁用预览模式)。 远程:部署成功。部署者=部署路径= 远程:部署日志:'https://glados9l.scm.azurewebsites.net/newui/jsonviewer?view_url=/api/deployments/ef2b3e8ce9341d66fa5e64826721e09085dbe214/log' 到https://myplan.scm.azurewebsites.net/Glados9L.git

  • [新分支] main -> main
root@9dcf7762daa9:/home# php -i | grep sqlsrv
Cannot load Zend OPcache - it was already loaded
root@9dcf7762daa9:/home# odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
root@9dcf7762daa9:/home# php -v
Cannot load Zend OPcache - it was already loaded
PHP 8.1.6 (cli) (built: Aug 17 2022 07:43:32) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.6, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.6, Copyright (c), by Zend Technologies
root@9dcf7762daa9:/home#
php pdo sqlsrv php-8
3个回答
1
投票

PHP 8.1 镜像中缺少 pdo_sqlsrv 是一个已知问题,根据这个拉取请求,他们很快就会添加这个驱动程序。

至于现在,您可以按照这篇文章

下载并手动启用它

0
投票

我有同样的问题。我的应用程序完美运行了几年。将 azure webapp 从 PHP7.4 切换到 PHP8 后,与 SQL 服务器的连接失败。 (PHP7.4 即将贬值)

我在使用浏览器连接到页面时收到此错误消息。

错误连接到 SOL 服务器 PDOException Obred([消息保护] => 找不到驱动程序 [字符串 Excephorrpnvate]=> [代码保护] => 0 [文件保护] -> ihome/siteAmwroot/DEV railtypeWrthProcess php [行保护] = > 122 [trace Exception pnvate]=> Array ( [0] => Array ( [file] => /home/site/wwwroot/DEVraillypeWith Process php [line] => 122 [function] -> construct [class] => POO [type] => -> [args] => Array ( [0] sglsry server - lcp delachauxrailtechbddserver database windows net,1433, Database = BDDWeldingKrtAPP [1] => weldingKrtApp01 [2] => ****** ) ) ) [previous Exception pnvate]=> [errorInfo] ) 1

这里是我如何使用 PHP 连接到服务器。

try {
    $conn = new PDO("sqlsrv:server = tcp:delachauxrailtechbddserver.database.windows.net,1433; Database = BDDWeldingKitAPP", "weldingKitApp01", "******");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    print("Error connecting to SQL Server.");
    die(print_r($e));
}

Web 应用程序是使用 Azure 控制台界面创建的。不是命令。

谢谢大家的支持


0
投票

同样的事情发生在我身上解决方法

$conn = new PDO("sqlsrv:server=$servername,$port;Database=$database;ConnectionPooling=0", $username, $password);
                // php 7 ,array(
                //       PDO::ATTR_PERSISTENT => false,
                //       PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
                //         )
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//php 8
© www.soinside.com 2019 - 2024. All rights reserved.