【问题标题】:How to debug PHP in MS Azure如何在 MS Azure 中调试 PHP
【发布时间】:2015-10-20 16:16:45
【问题描述】:

首先要做的事:我被赋予在 Azure 上部署 Drupal 网站的任务。

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

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 函数,但足以说明这有点像 print_r 用于 Drupal 的类固醇。

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

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

【问题讨论】:

  • 请运行phpinfo并检查curl是否启用,测试$this->变量的值
  • 卷曲已启用。 $this-> variables 是什么意思?请原谅我的无知,但我不是 PHP 专家。
  • @LuckyChingi 表示您可以检查您在curl_init 中设置的变量是否不为空或不正确。
  • $this->variables 都按预期设置。 Azure 是否有可能阻止对外部 API 的 curl 调用?
  • Azure Web App 不会阻止 curl 调用,我们可以在 Azure 上使用以下代码进行测试:$ch = curl_init("www.bing.com"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); print($output); curl_close($ch); 。顺便看看你的Api服务器是否有白名单,可能会阻塞Azure Web App的HTTP请求。

标签: php azure drupal drupal-7


【解决方案1】:

对于 prod 环境,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 上的代码。

【讨论】:

  • 感谢您的帮助。我遇到的最后一个问题是通过 php 启用电子邮件。你知道如何让它工作吗?如果我在 Linux 上安装 sendmail,我得到的错误将会得到解决。我怎样才能让它在 Azure 上运行?
  • 由于这个问题与本帖关系不大,建议你开一个新帖,对其他有类似问题的社区有好处。
  • 问题标题是“如何在 Azure 上调试 PHP”,这回答了“如何打开错误”的不同问题
  • @pilavdzice,这是在 Azure 上更改 PHP 配置的简单通用步骤,包括调试。打开错误是PHP调试的一种方式。我不知道你想用哪种方式在 Azure 上调试 PHP,我找到了一个帖子 hajekj.net/2016/09/06/… 可能会给你一个不同的想法。
  • @GaryLiu-MSFT 是的,您发布了更改 PHP 配置的重要步骤,但问题是如何启用调试。 PHP 有一个名为 XDebug(和其他)的调试器。调试器具有让您跟随代码实时执行、测量性能和其他事情的功能。显示错误不是调试。更改 PHP 配置也不是启用调试所需的全部内容。由于这个错误答案被标记为正确,因此没有人发布更复杂的正确答案。
猜你喜欢
  • 2016-09-04
  • 1970-01-01
  • 1970-01-01
  • 2011-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-04
  • 1970-01-01
相关资源
最近更新 更多