2017-07-26 1 views
0

J'ai développé un script PHP qui génère un rapport financier simple et l'envoie via SMTP (en utilisant la bibliothèque PHPMailer).PHP Azure WebJob - Faute de code de sortie 255 (mais fonctionne bien sur Kudu)

Je tente d'héberger et d'exécuter le script à l'aide d'Azure Web Jobs, mais le travail échoue chaque fois que je l'exécute. Le WebJob est situé au wwwroot\App_Data\jobs\triggered\send-sales-report\send_sales_report.php sur Azure.

Le contenu du script est le suivant: comme on peut le voir, le script importe un certain nombre d'autres scripts:

<?php 

    try 
    { 

     include "./../../../../inc/class.EmailMessage.inc"; 
     include "./../../../../E-Mail.php"; 

     $message = new EmailMessage('sales_report', array()); 
     SendOrderEmail('Sales Report', $message->render(), '[email protected]', 'Recipient Name'); 

    } 
    catch (Exception $e) 
    { 

     echo 'Caught exception: ', $e->getMessage(), "\n"; 

    } 

?> 

En outre, la structure des répertoires des fichiers mentionnés ci-dessus est comme suit:

wwwroot 
|___App_Data 
    |___jobs 
     |___triggered 
      |___send-sales-report 
       |___send_sales_report.php 
|___inc 
    |___class.EmailMessage.inc 
|___emails 
    |___sales_report.php 
|___E-Mail.php 

Quand je lance le PHP WebJob à l'aide le portail Azure (à la fois manuellement et sur une planification), il échoue avec le code de sortie 255; Toutefois, lorsque j'exécute le script à l'aide de la console Kudu sur Azure, cela fonctionne très bien. En outre, j'ai également répliqué l'environnement de course localement et cela fonctionne bien.

Toute aide est très appréciée.

Répondre

1

Je vous recommande d'activer PHP Error Logs pour votre application. Créer un .user.ini fichier et ajoutez ce qui suit à elle:

log_errors = on

Conseiller cet blogpost: Enable PHP error logging

L'emplacement par défaut pour les journaux d'erreurs PHP sera: D:\home\LogFiles\php_errors.log

Cela devrait aider à aller plus loin.

1

255 est une erreur. Voir PHP exit status 255: what does it mean?. Ainsi, vous pouvez rencontrer une erreur fatale dans votre script PHP.

Il est possible d'intercepter les erreurs fatales par using register_shutdown_function function. L'exemple de code suivant que vous pouvez utiliser pour enregistrer l'erreur fatale lorsqu'elle s'est produite.

<?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(), '[email protected]', 'Recipient Name'); 

} 
catch (Exception $e) 
{ 

    echo 'Caught exception: ', $e->getMessage(), "\n"; 

} 

function shutdown_function() 
{ 
    $e = error_get_last(); 
    print_r($e); 
}