Aller au contenu

Lancement de script utilisateur php en tache planifié


streamaxe

Messages recommandés

Bonjour ,

Je suis assez embêté et j’aurais besoin de vos lumières.
Tout d’abord j’utilise Dolibarr sur un nas synology. C'est un ERP WEB.

J’ai planifié une tache de sauvegarde de base de donnée dans dolibarr.

Cette tache bien évidemment est en retard si je ne fais pas tourner le script cron qui se trouve chez moi au chemin suivant : \volume1\web\dolibarr\scripts\cron\cron_run_jobs.php

J’ai donc paramétré mon NAS depuis l’interface de planif des taches à faire tourner toutes les X minutes mon script pour bien effectuer la sauvegarde.

 

le code que vous voyez c'est obligatoire... c'est un code généré dans le module de l'application qui le rend acessible en HTML aussi...

 

Malheureusement je me retrouve avec une erreur Mysqli à l'exécution !!

PHP Fatal error: Uncaught Error: Class ‹ mysqli › not found in /volume1/web/dolibarr/htdocs/core/db/mysqli.class.php:216
Stack trace:
#0 /volume1/web/dolibarr/htdocs/core/db/mysqli.class.php(93): DoliDBMysqli->connect(‹ localhost ›, ‹ ccb ›, ‹ Motdepassecaché… ›, ‹  ›, ‹ 3307 ›)
#1 /volume1/web/dolibarr/htdocs/core/lib/functions.lib.php(84): DoliDBMysqli->__construct(‹ mysqli ›, ‹ localhost ›, ‹ ccb ›, ‹ Motdepassecaché ›, ‹ ccb_dolibarr ›, ‹ 3307 ›)
#2 /volume1/web/dolibarr/htdocs/master.inc.php(138): getDoliDBInstance(‹ mysqli ›, ‹ localhost ›, ‹ ccb ›, ‹ Motdepassecaché ›, ‹ ccb_dolibarr ›, ‹ 3307 ›)
#3 /volume1/web/dolibarr/scripts/cron/cron_run_jobs.php(57): require_once(’/volume1/web/do…’)
#4 {main}
** thrown in /volume1/web/dolibarr/htdocs/core/db/mysqli.class.php on line 216**

Savez vous ce qui pèche ?

Quand je lance le script depuis le module dans dolibarr via HTTP > URL pour vérifier et lancer les travaux planifiés qualifiés depuis un navigateur:" cela fonctionne…

Merci pour votre aide... Dites moi s'il vous manque des infos pour essayer de m'aider... je vous met le fameux cron_run_jobs.php en pj

cron_run_jobs.php

Lien vers le commentaire
Partager sur d’autres sites

@streamaxe

Bonjour,

Sauf erreur de ma part, voilà la commande à utiliser dans le gestionnaire de tâche de DSM  :

/usr/bin/php -f /volume1/web/dolibarr/scripts/cron/cron_run_jobs.php >> /volume1/web/out.txt

il fallait préciser que tu utilises l'application php (/usr/bin/php). Ensuite la redirection vers out.txt n'est qu'un log.

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, 

Merci pour votre réponse. 

J'avais en effet essayé j'ai usé de google toute la matinée avant de vous embeter. 

Cela me fait tjr un soucis comme cité plus haut, sauf que j'ai un pavé juste avant ce message d'erreur. 

 

Usage: php [options] [-f] <file> [--] [args...]
   php [options] -r <code> [--] [args...]
   php [options] [-B <begin_code>] -R <code> [-E <end_code>] [--] [args...]
   php [options] [-B <begin_code>] -F <file> [-E <end_code>] [--] [args...]
   php [options] -S <addr>:<port> [-t docroot] [router]
   php [options] -- [args...]
   php [options] -a

  -a               Run as interactive shell
  -c <path>|<file> Look for php.ini file in this directory
  -n               No configuration (ini) files will be used
  -d foo[=bar]     Define INI entry foo with value 'bar'
  -e               Generate extended information for debugger/profiler
  -f <file>        Parse and execute <file>.
  -h               This help
  -i               PHP information
  -l               Syntax check only (lint)
  -m               Show compiled in modules
  -r <code>        Run PHP <code> without using script tags <?..?>
  -B <begin_code>  Run PHP <begin_code> before processing input lines
  -R <code>        Run PHP <code> for every input line
  -F <file>        Parse and execute <file> for every input line
  -E <end_code>    Run PHP <end_code> after processing all input lines
  -H               Hide any passed arguments from external tools.
  -S <addr>:<port> Run with built-in web server.
  -t <docroot>     Specify document root <docroot> for built-in web server.
  -s               Output HTML syntax highlighted source.
  -v               Version number
  -w               Output source with stripped comments and whitespace.
  -z <file>        Load Zend extension <file>.

  args...          Arguments passed to script. Use -- args when first argument
                   starts with - or script is read from stdin

  --ini            Show configuration file names

  --rf <name>      Show information about function <name>.
  --rc <name>      Show information about class <name>.
  --re <name>      Show information about extension <name>.
  --rz <name>      Show information about Zend extension <name>.
  --ri <name>      Show configuration for extension <name>.

PHP Fatal error:  Uncaught Error: Class 'mysqli' not found in /volume1/web/dolibarr/htdocs/core/db/mysqli.class.php:216
Stack trace:
#0 /volume1/web/dolibarr/htdocs/core/db/mysqli.class.php(93): DoliDBMysqli->connect('localhost', 'ccb', '', '', '3307')
#1 /volume1/web/dolibarr/htdocs/core/lib/functions.lib.php(84): DoliDBMysqli->__construct('mysqli', 'localhost', 'ccb', '', 'ccb_dolibarr', '3307')
#2 /volume1/web/dolibarr/htdocs/master.inc.php(138): getDoliDBInstance('mysqli', 'localhost', 'ccb', '.', 'ccb_dolibarr', '3307')
#3 /volume1/web/dolibarr/scripts/cron/cron_run_jobs.php(57): require_once('/volume1/web/do...')
#4 {main}
  thrown in /volume1/web/dolibarr/htdocs/core/db/mysqli.class.php on line 216
 

Lien vers le commentaire
Partager sur d’autres sites

@streamaxe

Bonjour,

Si tu as php56 alors la commande serait plutôt :

/usr/bin/php56 -f /volume1/web/dolibarr/scripts/cron/cron_run_jobs.php >> /volume1/web/out.txt

 bien évidemment à transposer aussi selon la version de php que tu utilises au final (php7 par ex).

Sinon tu peux aussi ajouter un shebang avec env (pour la portabilité) au début du script PHP :

#!/bin/env php
<?php
...
?>

Ainsi, la ligne de commande se réduit à :

/volume1/web/dolibarr/scripts/cron/cron_run_jobs.php >> /volume1/web/out.txt

Dans ton message d'erreur ce ne serait pas des caractères parasites que les " &lt " et " &gt " dus à ton C/C dans ton message de réponse ? car là je ne comprend pas ?

De toutes façons si tu récoltes le message d'usage, c'est qu'il y a un problème de syntaxe dans ce que tu as écrit. A vérifier donc ... et comme je ne maîtrise pas plus que cela php, cela va m'être difficile de t'aider plus à ce niveau.

Cordialement

oracle7😉

 

Lien vers le commentaire
Partager sur d’autres sites

Merci ; 

je viens de faire une recherche... synology étant vraiment pas commun....... j'ai cherche le fichier PHP73 dans tout mes repertoires racines, car dans /usr/bin/ je n'ai que le php de base qui plante.

Dans /usr/local/bin/ par contre.... j'ai le php73 et 74 ! 

73 erreur différente de d'habitude... 74 ca marche ! 

Merci pour ton aide ! ca m'a aidé

 

 

Lien vers le commentaire
Partager sur d’autres sites

@streamaxe

Bonjour,

Tant mieux !😀

Astuce : Pour avertir un membre de ta réponse, tu tapes dans ton message "@" + les premiers caractères de son pseudo. Dans le popup qui apparaît tu cliques alors sur le pseudo recherché et il s'affiche sur fond bleu dans ton texte. Ainsi ton interlocuteur est informé/notifié de ta réponse sinon il ne voit rien sauf à rebalayer en arrière tous les messages (ce que peu de monde fait).

Cordialement

oracle7😉

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.