microsoft/windowsazure sdk 已于2021年2月停用,不再支持php 8+及新版azure rest api,应改用官方推荐的azure sdk for php(v2),即按服务拆分的独立包如azure/azure-storage-blob,配合azure/identity实现现代认证。

microsoft/windowsazure 已停用,**不建议再通过 Composer 引入该 SDK**。截至 2021 年 2 月,Microsoft 官方已正式终止对 microsoft/windowsazure 的支持,且该包在 Packagist 上已归档,无法安装新版本(如 PHP 8+ 环境下会直接失败)。
为什么 composer require microsoft/windowsazure 会失败
常见错误现象包括:Could not find package microsoft/windowsazure 或 Your requirements could not be resolved。这是因为:
- 该包最后更新是 2018 年,仅兼容 PHP ≤7.2 和旧版 Guzzle(v3/v4)
- Composer 默认启用 packagist.org 的 modern metadata,而该包已被标记为 abandoned
- Azure REST API 已全面升级,旧 SDK 无法对接当前 Blob、Queue、Service Bus 等服务的 v2023+ API 版本
替代方案:改用官方推荐的 Azure SDK for PHP(Azure SDK v2)
微软目前主推的是基于 php-sdk(即 azure/azure-storage-blob 等独立组件包),它们:
- 按服务拆分,只装需要的模块(例如只需 Blob 就只 require
azure/azure-storage-blob) - 依赖现代 PSR-4 + Guzzle 7 + HTTP client 抽象,兼容 PHP 7.4–8.3
- 使用 Azure Identity(
azure/identity)支持托管身份、环境变量、CLI 登录等多种认证方式
示例(上传文件到 Blob Storage):
composer require azure/azure-storage-blob guzzlehttp/guzzle azure/identity
然后用 DefaultAzureCredential 或 EnvironmentCredential 初始化客户端,而非旧版的 WindowsAzure\Blob\Models\CreateContainerOptions。
迁移时最容易忽略的兼容性断点
旧代码里常见的 Microsoft_WindowsAzure_Storage_Blob 类全部不存在了;新 SDK 中:
- 容器叫
ContainerClient,不是BlobRestProxy - 上传方法是
uploadBlob(),返回UploadResult对象,不是布尔值 - 连接字符串格式必须含
AccountName=和AccountKey=,且不能混用 SAS token 和 key 认证 - PHP 运行时若部署在 Azure App Service,需确保启用了
allow_url_fopen(否则DefaultAzureCredential无法访问 IMDS)
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











