PHP-скрипт не может получить доступ к папке «Vendor» для веб-сайта Azure

Фон:

Я использую службы приложений Azure для размещения веб-сайта php. Я новичок в Azure и PHP (программирование в этом отношении). В качестве отправной точки я следил за набором учебников по PHP. Учебное пособие, которым я сейчас пользуюсь, требует использования почтовой функции PHP, однако это не помогает, и из того, что я прочитал, связано с тем, что мне нужно использовать почтовую службу SendGrid при работе с размещенным веб-сайтом Azure.

Принятые шаги:

Сначала я установил SendGrid с рынка Azure. Затем я установил Composer в каталог своего проекта («wwwroot») с последующей установкой зависимостей. Я попытался использовать и «sendgrid / smtpapi», и «sendgrid / sendgrid-php» в качестве зависимостей в файле «composer.json». Установки оказались успешными, и папка «Vendor» (в «wwwroot») была обновлена ​​файлами «Composer» и «SendGrid».

Я попробовал несколько примеров кода для SendGrid, но решил придерживаться приведенного ниже (кажется, проще)

// using SendGrid's PHP Library
// https://github.com/sendgrid/sendgrid-php

require 'vendor/autoload.php';

$sendgrid = new SendGrid("SENDGRID_APIKEY");

$email    = new SendGrid\Email();

$email->addTo("test@sendgrid.com")
->setFrom("you@youremail.com")
->setSubject("Sending with SendGrid is Fun")
->setHtml("and easy to do anywhere, even with PHP");

$sendgrid->send($email);

** Проблема: ** Ошибка». Когда я просматриваю подробные журналы ошибок, я получаю еще одну ошибку «Ошибка HTTP 404.0 — Not Found».

Я знаю, что файл «vendor / autload.php», требуемый почтовым скриптом, существует

Когда я запускаю веб-сайт, почтовый скрипт прерывается на 500.0 — Внутренний сервер, как я вижу его на портале FTP.

Однако, если я пытаюсь перейти к папке «Vendor» через сайт «Kudu», возникает ошибка «Session Expired» (странно, что это происходит только для этой конкретной папки). Инструменты разработчика Internet Explorer показывают еще одну ошибку «403 Запрещено — Доступ запрещен»

Заключение:

Я пришел к выводу, что почтовый скрипт не работает, потому что он не может получить доступ к нужным файлам из папки «Поставщик». Однако я не знаю, почему или как обойти это. Любые рекомендации будут с благодарностью.

0

Решение

Как я создал новый тестовый проект для Azure Web Apps, чтобы отправлять электронные письма через SendGird SDK. Я не воспроизвел вашу проблему, вот мои шаги по созданию проекта SendGird, к вашему сведению:

  • Установите расширение Visual Studio Online и расширение Composer веб-приложений Azure для упрощения разработки и управления. Вы можете сослаться на ответ Как установить composer на сервис приложения? для шагов, чтобы установить расширения
  • Создать composer.json файл в корневом каталоге приложения. Содержание файла:

{
"require": {
"sendgrid/sendgrid": "~4.0"}
}

  • Откройте консоль и выполните команду composer install установить зависимость.

Мой тестовый код такой же, как и у вас, и он отлично работает на моей стороне. Вы можете попробовать эти шаги.

1

Другие решения

Других решений пока нет …