Problème PHP / Cron serveur / useradd

Problème PHP / Cron serveur / useradd - PHP - Programmation

Marsh Posté le 05-11-2010 à 17:52:37    

Bonjour à tous,
 
J'ai un léger soucis avec un script php.
En fait, je voudrais lancer en tache cron, un script php qui vérifie dans une base s'il y a des comptes FTP à créer.
 
S'il y en a, il me les créés grace à la fonction useradd.
 
En utilisant OVHM (serveur OVH), si j'exécute la commande manuellement :
 
/usr/local/php5/bin/php /home/genereft/www/cron.php > /erreur.txt
 
Tout fonctionne comme il se doit.
 
En revanche, la tâche cron qui tourne toutes les 1 minute, me retourne une erreur 127...  
 
Pour info, elle est bien exécuté en tant que root, je ne vois donc pas d'où peut provenir le soucis...
 
Voici le code de mon script php :
 

Code :
  1. <?php
  2. require_once('config.php');
  3. $res = mysql_query('SELECT * FROM listing WHERE etat!="Terminé"');
  4. while($data = mysql_fetch_array($res))
  5. {
  6.     if($data['etat']=='Création')
  7.     {
  8.         $s1="<Aa.Bb0CcDd1EeFf2GgHh>IiJj3KkLl4MmNn!Oo4PpQq5RrSs6TtUu7VvWw8XxYyZz9";
  9.         $mot_de_passe= crypt($data['mot_de_passe'],substr ($s1,( 70 * rand),1).substr ($s1,( 70 * rand),1));
  10.         passthru('useradd -m -k /home/genereft/www/ftp -p '.escapeshellcmd($mot_de_passe).' -s /bin/false -d /home/genereft/www/dossier_ftp/'.$data['pseudo'].' '.$data['pseudo'], $return);
  11.         mysql_query('UPDATE listing SET etat="Terminé" WHERE identifiant="'.$data['identifiant'].'"');
  12.     }
  13.     elseif($data['etat']=='Suppression')
  14.     {
  15.         passthru('userdel -r '.$data['pseudo']);
  16.         mysql_query('DELETE FROM listing WHERE identifiant="'.$data['identifiant'].'"');
  17.     }
  18. }
  19. ?>


 
En revanche les fonctions Exec / System, eux ne fonctionnent pas, même en lancement en ligne de commande ;)
 
Merci d'avance pour vos répondre.
 
Anthony

Reply

Marsh Posté le 05-11-2010 à 17:52:37   

Reply

Marsh Posté le 05-11-2010 à 18:06:34    

A premiere vue, ca serait plutôt un prob de repertoire ?  
 
Ex: tu lui demandes d'inclure config.php, peut-etre faut-il préciser le chemin complet de ton fichier php. Idem pour ton passthru('useradd ..
 

Reply

Marsh Posté le 05-11-2010 à 18:10:00    

Je vais tenter, mais ça me parait étrange, car dans ce cas, la commande ne fonctionnerait pas en ssh ... enfin, c'est cette logique que je ne comprends pas
 
J'ai tenté, toujours pas...
 
Pour le include config, pas de soucis... bizarrement tout le fichier est executé, sauf le useradd


Message édité par protecteur le 05-11-2010 à 18:23:36
Reply

Marsh Posté le 08-11-2010 à 10:00:08    

Le cron est bien en root ? Ou sous un utilisateur avec certains privilèges ?


---------------
Fort et motivé. Sauf parfois.
Reply

Marsh Posté le 08-11-2010 à 11:20:12    

Problème d'environnement. Tu as des variables qui sont initialisées quand tu es loggé sur la machine au lancement du script, et qui ne le sont pas en cron.


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 08-11-2010 à 13:24:25    

Re bonjour,
 
- Oui mon cron est bien en root.
- Quel genre de variable, et comment résoudre ce problème?  
 
Merci d'avance

Reply

Marsh Posté le 08-11-2010 à 13:43:19    

Une variable d'environnement.
Regarde ce qui est défini dans ton .bash_profile ou l'équivalent sur ton linux.


---------------
Can't buy what I want because it's free -
Reply

Sujets relatifs:

Leave a Replay

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