【发布时间】: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 或更高版本才能运行。这可能是根本原因。