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 - Internal Server", как я вижу его на портале FTP.
Однако, если я пытаюсь перейти к папке "Vendor" через сайт "Kudu", возникает ошибка "Session Expired" (странно, это происходит только для этой конкретной папки). Инструменты разработчика Internet Explorer показывают еще одну ошибку "403 Forbidden - Access Denied"
Заключение:
Я пришел к выводу, что почтовый скрипт не работает, потому что он не может получить доступ к файлам, требуемым из папки "Поставщик". Однако я не знаю, почему или как обойти это. Любые рекомендации будут с благодарностью.
1 ответ
Как я создал новый тестовый проект для Azure Web Apps, чтобы отправлять электронные письма через SendGird SDK. Я не воспроизвел вашу проблему, вот мои шаги по созданию проекта SendGird, к вашему сведению:
- Установите расширение Visual Studio Online и расширение Composer веб-приложений Azure для упрощения разработки и управления. Вы можете сослаться на ответ Как установить composer на сервис приложения? для шагов, чтобы установить расширения
- Создать
composer.json
файл в корневом каталоге приложения. Содержание файла:
{
"require": {
"sendgrid/sendgrid": "~4.0"
}
}
- Откройте консоль и выполните команду
composer install
установить зависимость.
Мой тестовый код такой же, как и у вас, и он отлично работает на моей стороне. Вы можете попробовать эти шаги.