2016-02-20 46 views
0

背景:PHP腳本不能Azure的網站訪問「供應商」文件夾

我使用Azure的應用服務託管的PHP網站。我是Azure和PHP的新手(對於這個問題一般編程)。作爲一個起點,我一直在關注一組PHP教程。我目前使用的教程要求我使用PHP郵件功能,但是這樣做會失敗,並且從我讀過的內容來看,這是因爲我需要在使用Azure託管網站時使用SendGrid郵件服務。

所採取的步驟:

首先,我從Azure的市場安裝SendGrid。然後,我將Composer安裝到我的項目目錄('wwwroot'),然後安裝依賴關係。我嘗試在'composer.json'文件中使用'sendgrid/smtpapi'和'sendgrid/sendgrid-php'作爲依賴關係。安裝顯示成功,「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("[email protected]") 
     ->setFrom("[email protected]") 
     ->setSubject("Sending with SendGrid is Fun") 
     ->setHtml("and easy to do anywhere, even with PHP"); 

$sendgrid->send($email); 

**問題:**錯誤」。當我查看詳細的錯誤日誌時,出現了另一個錯誤「HTTP錯誤404.0 - 未找到」。

我知道,由郵件腳本所需的文件「供應商/ autload.php」確實存在

當我運行的網站的郵件腳本以「突破500.0 - 內部服務器,我可以從看到它FTP門戶。但是,如果我嘗試通過'Kudu'網站瀏覽'Vendor'文件夾,會發生「Session Expired」錯誤(奇怪的是它只發生在這個特定的文件夾中)。 Internet Explorer開發人員工具顯示的「403次禁止進一步的錯誤 - 拒絕訪問」

結論:

這是我的結論是,郵件腳本突破,因爲它無法訪問從所要求的文件‘供應商’文件夾。然而,我不知道爲什麼或如何解決這個問題。任何建議將不勝感激。

+0

對不起,一些東西似乎出現在「問題」部分的第一段: 當我運行網站的郵件腳本與'500.0 - 內部服務器錯誤'打破.... – Claire

回答

1

因爲我在Azure Web Apps上創建了一個新的測試項目,通過SendGird SDK發送電子郵件。我沒有重現您的問題,這裏有我的步驟,構建SendGird項目,供參考:

  • 安裝Azure的Web應用程序的Visual Studio的在線擴展和延伸作曲,便於開發和管理。您可以參考How to install composer on app service?的回答以獲取安裝擴展的步驟
  • 在應用程序的根目錄中創建composer.json文件。該文件的內容:

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

  • 打開控制檯運行的命令composer install安裝的依賴。

我的測試代碼和你一樣,它在我身邊很好。你可以嘗試這些步驟。