【问题标题】:PHP code working locally but not on AzurePHP 代码在本地工作,但不在 Azure 上
【发布时间】:2016-04-04 15:32:07
【问题描述】:

我已经使用 SparkPost 为网站实施了邮件递送服务。代码如下所示:

require '/vendor/autoload.php';

use SparkPost\SparkPost; use GuzzleHttp\Client;
use Ivory\HttpAdapter\Guzzle6HttpAdapter;
$httpAdapter = new Guzzle6HttpAdapter(new Client());
$sparky = new SparkPost($httpAdapter, ['key'=>'...']);
[...]
[...]
$results = $sparky->transmission->send($mailarray);

它在 WampServer 上本地运行得很好,但是当我将它部署到 Azure 时却不行。我无权访问 Azure 日志,但我设法将问题缩小到一行:

$sparky = new SparkPost($httpAdapter, ['key'=>'...']);

我只是得到一个 500 错误,没有任何其他解释。奇怪的是,当我将它包裹在 try/catch 上时,除了空白屏幕和控制台上的 500 之外,我仍然没有得到任何东西。我怀疑它必须与 /autoload.php 无法加载某些东西有关。

有什么想法吗?

【问题讨论】:

  • 检查错误日志以获取有关 500 的详细信息。并非 php 中的所有内容都可以尝试/捕获,例如致命的解析错误。
  • PHP 中可能存在您看不到的空白,或者上面的某些内容导致它/在不同的页面上。您是否处于无限循环的 while 循环中?
  • 在需要的路径(和其他地方)中检查你的大写。 local/dev/prod 可以对 casse 敏感/不敏感
  • 使用 .user.ini 方法查看服务器上的错误,我发现这是原因,这让我更难理解:致命错误:无法使用函数返回在第 118 行的 D:\home\site\wwwroot\assets\vendor\sparkpost\php-sparkpost\lib\SparkPost\SparkPost.php 中写入上下文中的值
  • 原来我部署的 Azure 实例使用 PHP 5.4,而 SparkPost 库需要 PHP 5.5 或更高版本才能运行。这可能是根本原因。

标签: php azure sparkpost


【解决方案1】:

根据https://github.com/SparkPost/php-sparkpost/blob/master/composer.json#L18 Github repo 上 SparkPost lib 的要求,PHP 版本需要高于5.5。所以你可以修改你的Azure Web Apps的PHP版本,详细步骤请参考https://azure.microsoft.com/en-us/documentation/articles/web-sites-php-configure/#how-to-change-the-built-in-php-version

【讨论】:

  • 我也曾建议将 PHP 版本作为 cmets 的原因。我终于确认这是原因,所以我将您的回复标记为正确答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-10
  • 2019-04-20
  • 2017-06-05
  • 2021-07-23
  • 2013-04-14
  • 2016-09-21
  • 1970-01-01
相关资源
最近更新 更多