我开发了一个PHP脚本,它生成一个简单的财务报告并通过SMTP发送(使用PHPMailer库)。
我正在尝试使用Azure Web Jobs托管和执行脚本,但遗憾的是每次运行时作业都会失败。
WebJob位于Azure上的from rest_framework.parsers import JSONParser
class MyUserViewSet(viewsets.ModelViewSet):
queryset = get_user_model().objects.all()
serializer_class = UserSerializer
parser_classes = (JSONParser,)
。
脚本的内容如下;可以看出,该脚本导入了许多其他脚本:
wwwroot\App_Data\jobs\triggered\send-sales-report\send_sales_report.php
另外,上述文件的目录结构如下:
<?php
try
{
include "./../../../../inc/class.EmailMessage.inc";
include "./../../../../E-Mail.php";
$message = new EmailMessage('sales_report', array());
SendOrderEmail('Sales Report', $message->render(), 'name@emailprovider.com', 'Recipient Name');
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
?>
当我使用Azure门户运行PHP WebJob时(手动和按计划),它失败,退出代码为255;但是,当我在Azure上使用Kudu控制台执行脚本时,它的工作正常。另外,我还在本地复制了运行环境,它运行正常。
非常感谢任何帮助。
答案 0 :(得分:1)
我建议您为您的应用启用PHP错误日志。创建 .user.ini
文件并将以下内容添加到其中:
log_errors = on
请参阅此博文:Enable PHP error logging
PHP错误日志的默认位置为: D:\home\LogFiles\php_errors.log
这应该有助于进一步推进。
答案 1 :(得分:1)
255
是一个错误。见PHP exit status 255: what does it mean?。因此,您可能会在PHP脚本中遇到致命错误。
可以通过using register_shutdown_function
function捕获致命错误。以下代码示例可用于记录发生时的致命错误。
<?php
register_shutdown_function('shutdown_function');
try
{
include "./../../../../inc/class.EmailMessage.inc";
include "./../../../../E-Mail.php";
$message = new EmailMessage('sales_report', array());
SendOrderEmail('Sales Report', $message->render(), 'name@emailprovider.com', 'Recipient Name');
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
function shutdown_function()
{
$e = error_get_last();
print_r($e);
}