如何在 MS Azure 中调试 PHP

How to debug PHP in MS Azure

首先要做的事情是:我的任务是在 Azure 上部署 Drupal 网站。

我在本地使用 OS X 运行ning Apache,一切正常。当我将项目部署到 Azure 时,出现错误。经过一些调试后,我将错误隔离到这段代码中:

private function getToken(){
    $ch = curl_init($this->host . $this->clientId . "&client_secret=" . $this->clientSecret);
    curl_setopt($ch,  CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('accept: application/json',));
    $response = json_decode(curl_exec($ch));
    curl_close($ch);
    $token = $response->access_token;
    dvm($response, $name = NULL);
    return $token;
}

dvm() 是一个 Drupal Devel 函数,但足以说明这对 Drupal 来说是一种 print_r 的强化功能。

我遇到的问题是,无论出于何种原因,$result 都会回来 NULL。当我 运行 在我的本地机器和 Linux/Debian 框上使用相同的代码时,一切都按预期工作(我得到一个对象作为 curl 的结果)。

由此得出的结论是,Azure 不喜欢这段代码中的某些内容。问题是找出什么。有什么想法吗?

对于生产环境,display_errors 在 Azure Web 应用程序的 PHP 运行时中设置 off。我们可以通过更改内置 PHP 配置来打开调试设置。

以下是简单的步骤:

1、添加一个.user.ini文件到你的根目录。

2,使用与 php.ini 文件中相同的语法将配置设置添加到 .user.ini 文件。根据您的要求,您的 .user.ini 文件将包含以下文本:

display_errors = On

3、部署您的网络应用程序。

4、重启网络应用

您可以阅读 official guide 了解更多信息。

此外,我们可以登录我们网站的Kudu控制台来管理我们的网站。 Kudu 控制台的 URL 应该是这样的:https://{your_web_site_name}. scm.azurewebsites.net,然后点击 Tools => Diagnostic dump 下载诊断日志。

此外,我们可以使用 WebMatrix 直接修改您在 Azure Web Apps 上的代码。