[Résolu] Probleme execution de script php avec cron

Probleme execution de script php avec cron [Résolu] - PHP - Programmation

Marsh Posté le 13-09-2014 à 13:02:23    

Bonjour,
Voila j'ai un site hébergé pas 1and1 sur un serveur linux.
J'ai suivi les explications de 1and 1 pour créer une tache cron : https://help.1and1.com/hosting-c376 [...] 95882.html
 
J'ai tout réussi jusqu’à la fin et tout fonctionne, mais voilà mon problème, lorsque que je change le script de base donnée dans l'exemple ci deussus par ce script

Code :
  1. <?php
  2.   try
  3.   {
  4.  $bdd = new PDO('mysql:exemple;dbname=exemple', 'exemple', 'exemple');
  5.   }
  6.   catch (Exception $e)
  7.   {
  8.     die('Erreur : ' . $e->getMessage());
  9.   }
  10. function envoieMailRappelProf($exemple)
  11. {
  12. $expediteur="exemple";
  13. $expediteurMail="exemple";
  14. global $bdd;
  15. $req=$bdd->query("SELECT * FROM EXEMPLE WHERE id=".$exemple);
  16. $profDonnees=$req->fetchALl();
  17. foreach( $profDonnees as $unProf)
  18. {
  19.  $emailProf=$unProf['email'];
  20.  $nomProf=$unProf['nom'];
  21.  $prenomProf=$unProf['prenom'];
  22. }
  23. $contenuMail="exemple";
  24. $mail =$emailProf;
  25. if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $mail))
  26. {
  27. $passage_ligne = "\r\n";
  28. }
  29. else
  30. {
  31. $passage_ligne = "\n";
  32. }
  33. $message_txt = $contenuMail;
  34. $message_html = "<html><head></head><body>".$contenuMail."</body></html>";
  35. $boundary = "-----=".md5(rand());
  36. $sujet = "exemple";
  37. $header = "From: \"".$expediteur."\"<".$expediteurMail.">".$passage_ligne;
  38. $header.= "Reply-to: \"".$expediteur."\" <".$expediteurMail.">".$passage_ligne;
  39. $header.= "MIME-Version: 1.0".$passage_ligne;
  40. $header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
  41. $message = $passage_ligne."--".$boundary.$passage_ligne;
  42. $message.= "Content-Type: text/plain; charset=\"ISO-8859-1\"".$passage_ligne;
  43. $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
  44. $message.= $passage_ligne.$message_txt.$passage_ligne;
  45. $message.= $passage_ligne."--".$boundary.$passage_ligne;
  46. $message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
  47. $message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
  48. $message.= $passage_ligne.$message_html.$passage_ligne;
  49. $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
  50. $message.= $passage_ligne."--".$boundary."--".$passage_ligne;
  51. mail($mail,$sujet,$message,$header);
  52. }
  53. $listProf=$bdd->query("SELECT * FROM EXEMPLE" );
  54. $listProfD=$listProf->fetchAll();
  55. foreach($listProfD as $aProf)
  56. {
  57. envoieMailRappelProf($aProf['id']);
  58. }
  59. ?>


 
Si j’exécute le script à la main en saisissant L’URL dans un navigateur tout marche bien.
mais dans cron j'ai essayé les deux façons suivantes mais aucune ne marche
0 1 * * 6 /usr/bin/php /exemple/exemple/exemple/exemple/monscript.php
0 1 * * 6 WGET -q http://monsite.com/monscript.php
 
Pour info j'ai essayé de modifié monscript.php  via nano monscript.php ,par le script exemple donné par 1and1 et cela fonctionne.
Je pense donc que le problème vient du script en lui même mais je ne comprends pas pourquoi puisque le script fonctionne normalement lorsqu'il est lancé à la main.
 
Si quelqu'un a une idée, par avance merci


Message édité par bupbup le 14-09-2014 à 11:03:11
Reply

Marsh Posté le 13-09-2014 à 13:02:23   

Reply

Marsh Posté le 13-09-2014 à 13:50:44    

PS : peut être ce sujet devrait être dans la section linux?
Si tel est le cas veuillez me le dire et je déplacerais si cela m'est possible.

Reply

Marsh Posté le 14-09-2014 à 11:02:39    

Voilà la solution

Code :
  1. * * * * * /usr/bin/wget -q http://monsite.com/monscript.php

Reply

Marsh Posté le 15-09-2014 à 10:48:07    

Je sais pas si ça vient de là, mais tu sais que quand t'appelles un script php en ligne de commande (ex : /usr/bin/php /exemple/exemple/exemple/exemple/monscript.php), certaines variables d'environnement n'existent plus (ex : $_SERVER). Du coup, si ton script php fait appel directement ou indirectement (par un include par ex) à $_SERVER, ben ça va pas le faire :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed