Получаете ли вы это напрямую от вызова API? Если это так, он должен вернуться с заголовком x-ms-requesttid.
Если вы возьмете это и обратитесь к
https://management.core.windows.net/<subscriptionID/operations/<requestId>
Это должно дать вам гораздо более подробное сообщение о том, что происходит, обычно точно сообщая вам, что происходит.
Помимо этого, я бы проверил следующее:
1.) Проверьте вашу кодировку, затем проверьте ее снова. Я упоминаю об этом только потому, что когда я впервые обернул API, у меня возникла проблема, когда моя кодировка что-то испортила. Итак, я наконец написал код, который будет читать файл, кодировать его, декодировать, сохранять в новый файл. Затем двоичное сравнение двух. Наконец я обнаружил, что они отличаются друг от друга одним байтом, и это сломало все это.
2.) Проверьте вашу конфигурацию. Загрузите этот точный файл конфигурации в вашу роль через портал и посмотрите, будет ли он принят.
3.) Проверка заголовка версии API. Не уверен в SDK для PHP, но если возможно, можете ли вы явно проверить / установить заголовок x-ms-version, отправляемый в API?
4.) Вызвать действительный сбой и выполнить обратный инжиниринг оттуда. Если все остальное не удалось, передайте пустую или случайную / недействительную закодированную строку. Затем используйте конечную точку GetOperationStatus, чтобы убедиться, что вы получаете ошибки на мелодию «Конфигурация недействительна». Таким образом, вы узнаете, что ваш запрос принимается, но кодировка / конфигурация выдает ошибку.
РЕДАКТИРОВАТЬ : из вашего ответа здесь и MSDN
5.) Попробуйте опустить декларацию XML
<?xml version="1.0" encoding="utf-8"?>
из тела запроса.
Когда я выполняю ваш точный запрос по сравнению с тем же запросом, созданным моей собственной оболочкой .net api, единственное отличие состоит в том, что декларация XML отсутствует в теле POST. Сгенерированный оберткой класс работает для меня.