Qu'est-ce qui emp=c3=aache un script php de s'=c3=a9cuter en CRON =3f

Le
Didier
Bonjour,
J'ai un script PHP appelé par une tâche CRON. Tout va bien comme prévu.
A la fin de ce script (dédié à faire des sauvegardes de bases MySQL vers
des fichiers .csv), je rajoute deux commandes "copy" toutes simples.
Si je lance ce script à la main, il s'éxécute bien en entier.
Si je laisse faire la tâche CRON, seule la première partie, qui marchait
bien initialement, s'éxécute, mais pas les deux commandes "copy" rajoutées.
Je sèche, et si quelqu'un voulait bien me donner un coup de pouce
Je suis sur un RaspBerry PI 3+, sous Jessie.
Merci.
Didier.
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Denis Beauregard
Le #26526617
Le Tue, 24 Sep 2019 16:41:26 +0200, Didier écrivait dans fr.comp.lang.php:
Bonjour,
J'ai un script PHP appelé par une tâche CRON. Tout va bien comme prévu.
A la fin de ce script (dédié à faire des sauvegardes de bases MySQL vers
des fichiers .csv), je rajoute deux commandes "copy" toutes simples.
Si je lance ce script à la main, il s'éxécute bien en entier.
Si je laisse faire la tâche CRON, seule la première partie, qui marchait
bien initialement, s'éxécute, mais pas les deux commandes "copy" rajoutées.
Je sèche, et si quelqu'un voulait bien me donner un coup de pouce ...
Je suis sur un RaspBerry PI 3+, sous Jessie.

C'est la commande system ? Il faut peut-être tout bonnement changer
le dossier actif avant de faire les copies ?
Denis
Olivier Miakinen
Le #26526623
Bonjour,
Le 24/09/2019 à 16:41, Didier a écrit :
Bonjour,
J'ai un script PHP appelé par une tâche CRON. Tout va bien comme prévu.
A la fin de ce script (dédié à faire des sauvegardes de bases MySQL vers
des fichiers .csv), je rajoute deux commandes "copy" toutes simples.
Si je lance ce script à la main, il s'éxécute bien en entier.
Si je laisse faire la tâche CRON, seule la première partie, qui marchait
bien initialement, s'éxécute, mais pas les deux commandes "copy" rajoutées.
Je sèche, et si quelqu'un voulait bien me donner un coup de pouce ...
Je suis sur un RaspBerry PI 3+, sous Jessie.

Je ne connais pas le Raspberry PI, mais je vais supposer que ça
fonctionne comme un GNU/Linux. Ceci étant posé, voici quelques
suggestions.
1) Quand tu lances PHP et le script via CRON, tu n'as pas les mêmes
droits d'accès que quand tu le lances à la main.
-> Essaye de copier dans un répertoire dont les droits sont 777
(écriture autorisée pour tout le monde).
2) Tu copies en donnant un chemin relatif « truc/chose » alors que
le répertoire courant n'est pas le même quand tu le lances via
CRON.
-> Essaye de copier vers un chemin absolu « /machin/truc/chose ».
3) Ta commande "copy" toute simple est un script maison qui appelle
la commande standard /bin/cp, mais elle n'est plus dans le PATH
quand tu l'appelles par CRON.
-> Essaye d'utiliser la commande standard, avec son chemin d'accès
complet « /bin/cp ».
--
Olivier Miakinen
Didier
Le #26526632
Le 24/09/2019 à 18:18, Denis Beauregard a écrit :
Le Tue, 24 Sep 2019 16:41:26 +0200, Didier écrivait dans fr.comp.lang.php:
Bonjour,
J'ai un script PHP appelé par une tâche CRON. Tout va bien comme prévu.
A la fin de ce script (dédié à faire des sauvegardes de bases MySQL vers
des fichiers .csv), je rajoute deux commandes "copy" toutes simples.
Si je lance ce script à la main, il s'éxécute bien en entier.
Si je laisse faire la tâche CRON, seule la première partie, qui marchait
bien initialement, s'éxécute, mais pas les deux commandes "copy" rajoutées.
Je sèche, et si quelqu'un voulait bien me donner un coup de pouce ...
Je suis sur un RaspBerry PI 3+, sous Jessie.

C'est la commande system ? Il faut peut-être tout bonnement changer
le dossier actif avant de faire les copies ?
Denis

Bonjour, et merci.
non, je me sius mal exprimé, ce n'est pas une commande copy, mais
l'instruction php copy.
Voici les lignes qu ne s'éxécutent pas :
$rep="/media/cle-usb/";
copy("Comptes.txt",$rep."Comptes.txt");
Didier.
Olivier Miakinen
Le #26526636
Le 24/09/2019 à 20:18, Didier répondait à Denis Beauregard :
C'est la commande system ? Il faut peut-être tout bonnement changer
le dossier actif avant de faire les copies ?

non, je me sius mal exprimé, ce n'est pas une commande copy, mais
l'instruction php copy.

D'accord. Ceci, donc :
Voici les lignes qu ne s'éxécutent pas :
$rep="/media/cle-usb/";
copy("Comptes.txt",$rep."Comptes.txt");

Tu as bien mis un chemin absolu pour la destination (à savoir
/media/cle-usb/Comptes.txt) mais pas pour la source (c'est
seulement Comptes.txt). Es-tu sûr que le répertoire courant
est bien celui que tu crois, quand le script est lancé par
cron ?
--
Olivier Miakinen
Olivier Miakinen
Le #26526635
Le 24/09/2019 à 20:26, je demandais à Didier :
Tu as bien mis un chemin absolu pour la destination (à savoir
/media/cle-usb/Comptes.txt) mais pas pour la source (c'est
seulement Comptes.txt). Es-tu sûr que le répertoire courant
est bien celui que tu crois, quand le script est lancé par
cron ?

Voir les commandes getcwd() et chdir() :
--
Olivier Miakinen
Didier
Le #26526634
Le 24/09/2019 à 18:33, Olivier Miakinen a écrit :
Bonjour,
Le 24/09/2019 à 16:41, Didier a écrit :
Bonjour,
J'ai un script PHP appelé par une tâche CRON. Tout va bien comme prévu.
A la fin de ce script (dédié à faire des sauvegardes de bases MySQL vers
des fichiers .csv), je rajoute deux commandes "copy" toutes simples.
Si je lance ce script à la main, il s'éxécute bien en entier.
Si je laisse faire la tâche CRON, seule la première partie, qui marchait
bien initialement, s'éxécute, mais pas les deux commandes "copy" rajoutées.
Je sèche, et si quelqu'un voulait bien me donner un coup de pouce ...
Je suis sur un RaspBerry PI 3+, sous Jessie.

Je ne connais pas le Raspberry PI, mais je vais supposer que ça
fonctionne comme un GNU/Linux.

Oui, effectivement, basé sur Debian.
Ceci étant posé, voici quelques
suggestions.
1) Quand tu lances PHP et le script via CRON, tu n'as pas les mêmes
droits d'accès que quand tu le lances à la main.

Le script contient tout un bloc d'instructions qui s'éxécutent bien; j'y
ai juste rajouté à la fin :
$rep="/media/cle-usb/";
copy("Comptes.txt",$rep."Comptes.txt");
Cette "copy" ne s'exécute pas.
Je pense donc que les droits sont OK (j'ai pas mal galéré il y a qq mois
sur ce point pour faire fonctionner ce script via CRON, mais demuis ce
temps-là il me sauvegarde mes tables MySQL fidèlement toutes les nuits à
00:00).
-> Essaye de copier dans un répertoire dont les droits sont 777
(écriture autorisée pour tout le monde).
2) Tu copies en donnant un chemin relatif « truc/chose » alors que
le répertoire courant n'est pas le même quand tu le lances via
CRON.

Eh oui ! C'est bien le chemin relatif qui pose problème dans le CRON.
Une fois dit, ça paraît évident, mais c'est mieux quand quand on a un
petit coup de main là-dessus.
Chapeau bas ! Je viens de vérifier, c'est nickel.
Un très grand merci !
Didier.
Olivier Miakinen
Le #26526633
Le 24/09/2019 à 20:30, Didier a écrit :

Eh oui ! C'est bien le chemin relatif qui pose problème dans le CRON.
Une fois dit, ça paraît évident, mais c'est mieux quand quand on a un
petit coup de main là-dessus.

Et donc, tu peux oublier ma réponse de 20 h 29.
Chapeau bas ! Je viens de vérifier, c'est nickel.
Un très grand merci !

:-)
--
Olivier Miakinen
Publicité
Poster une réponse
Anonyme