升级到 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
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#
我有同样的问题。我的应用程序完美运行了几年。将 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 控制台界面创建的。不是命令。
谢谢大家的支持
同样的事情发生在我身上解决方法
$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