Bonjour,

J'ai un script php qui se lance automatiquement chaque jour via la commande crontab. et depuis quelques jours ca ne marche pas, en fait ca lance le script mais j'ai un problème dans le script qui lui empêche à exécuter correctement.

En plus, quand j’exécute le script depuis le navigateur tout marche normale.
Merci pour votre aide ?

CODE CRONTAB :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
30 9 * * 1-5 /home/offresapec.sh > /home/offresapec.log
quand je regarde le fichier log, j'ai le message suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Fatal error: Call to a member function xpath() on a non-object in /home/www/web/updatedatabase.php on line 458
lignes de code correspond à ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// on récupère les données des offres
$aOffres = array();
foreach($xml->xpath('//item') as $oItem) {
  // récupère l'url
  $url = (string)current($oItem->xpath('link'));
  // récupère l'id depuis l'url (l'identifiant semble délimité par __ à gauche et à droite)
  // on peut utiliser les fonctions de chaînes normales car l'URL n'est a priori composée que de caractères ASCII
  $id = trim(substr($url, strpos($url, '__'), strrpos($url, '__') - strpos($url, '__')), '_');
  $aOffres[$id]['url'] = $url;
  $aOffres[$id]['id'] = $id;
  $aOffres[$id]['titre'] = lower_titre((string)current($oItem->xpath('title')));
  $aOffres[$id]['description'] = (string)current($oItem->xpath('description'));
  $sDate = (string)current($oItem->xpath('pubDate')); // date au format RFC 2822 :  Tue, 17 Mar 2009 00:00:00 +0100
  $sDate = date('Y-m-d', strtotime($sDate));
  $aOffres[$id]['pubDate'] = $sDate;
  $aOffres[$id]['lieu'] = (string)current($oItem->xpath('lieu'));
  $aOffres[$id]['entreprise'] = (string)current($oItem->xpath('entreprise'));
  $aOffres[$id]['typeContrat'] = (string)current($oItem->xpath('typeContrat'));
 
  $aOffres[$id]['remuneration'] = (string)current($oItem->xpath('remuneration'));
  $aOffres[$id]['salMin'] = (string)current($oItem->xpath('salMin'));
  $aOffres[$id]['niveauExp'] = (string)current($oItem->xpath('niveauExp'));
 
  // on calcule la pertinence de l'offre selon le nom de l'entreprise, le titre et la description de l'offre
  $pertinence_auto = calculePertinenceAuto(
    $aOffres[$id]['entreprise'],
    $aOffres[$id]['titre'],
    $aOffres[$id]['description']
  );
  $aOffres[$id]['pertinence_auto'] = $pertinence_auto ? '1' : '2';
  //echo "<li>" . $aOffres[$id]['pertinence_auto'] . " : " . $aOffres[$id]['titre'] . "</li>";
 
  // s'il n'y a pas de listeLieux, disons que c'est une offre "International"
  if (count($oItem->xpath('listeCodeLieux')) == 0) {
    $aOffres[$id]['lieu'] = 'International';
  }
  // sinon, on récupère le libellé de région/pays
  else {
    $oListeCodeLieux = $oItem->listeCodeLieux;
    unset($codeslieux);
    foreach($oListeCodeLieux->codeLieu as $codeLieu) {
      $codeslieux[] = (string)current($codeLieu);
    }
    $aOffres[$id]['lieu'] = getRegionEnvirojobFromListeCodesApec($codeslieux);
  }
 
  $aOffres[$id]['secteurActiviteCode'] = (string)current($oItem->xpath('secteurActivite/code'));
  $aOffres[$id]['secteurActiviteIntitule'] = (string)current($oItem->xpath('secteurActivite/intitule'));
  $aOffres[$id]['codeJobCode'] = (string)current($oItem->xpath('codeJob/code'));
  $aOffres[$id]['codeJobIntitule'] = (string)current($oItem->xpath('codeJob/intitule'));
}