[RESOLU] Cron php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Cron php

Re: Cron php

par sebastien.lelarge » 13 janv. 2016, 12:13

C'est parfait, ca fonctionne, merci beaucoup !!!!
bonne journée

Re: Cron php

par Ryle » 13 janv. 2016, 11:28

Bonjour,

La constante __FILE__ te donne le chemin absolu vers le script exécuté. A l'aide de la fonction dirname() tu peux extraire le répertoire dans lequel se trouve ton script et t'en servir comme base pour ensuite utiliser un chemin relatif :
$filename = dirname(__FILE__) . '/../FICHIERS/villes_' . date('Y_m_d') . '.csv'; 
// faire un echo $filename pour vérifier que le chemin est bon et l'ajuster au besoin :)
Tu peux ainsi utiliser cette méthode sans avoir à spécifier explicitement le chemin absolu dans ton code source (php ira le chercher, même si ton application est déplacée ou renommée), ce qui devrait satisfaire ta dsi :)

Re: Cron php

par sebastien.lelarge » 12 janv. 2016, 09:58

Bonjour,

Après analyse il s'avère que le CRON fonctionne lorsque je place un lien absolue

exemple :
$filename = '../FICHIERS/villes_'.date('Y_m_d').'.csv'; -----> ne fonctionne pas
$filename = 'var/html/crm/FICHIERS/villes_'.date('Y_m_d').'.csv'; ----> fonctionne

ma dsi prétextant des histoires de sécurité, je dois trouver un solution, quelqu'un aurait une idée ?

Re: Cron php

par sebastien.lelarge » 16 déc. 2015, 14:22

merci pour ton retour.

c'est quoi ECE ?

Re: Cron php

par Ryle » 16 déc. 2015, 13:27

Je pense donc qu'il s'agit bien d'un problème de paramétrage du cron (à voir avec ta DSI ce qu'ils ont paramétré, s'ils ont un message d'erreur lors de l'exécution de la tâche ?) ou bien un problème de droits d'exécution.

En effet, le serveur web qui exécute php a les droits d'exécution et d'écriture pour la génération de ton fichier. Ce n'est pas nécessairement le cas de " l'utilisateur " à partir duquel le cron s'exécute et il est parfois nécessaire d'ajuster ses droits.

As-tu accès où peux tu demander les logs d'erreurs de php ? tu en sauras sans doute d'avantage sur ce qui pose réellement problème :)


Ps : sebastien.lelarge de l'ECE ?

Re: Cron php

par sebastien.lelarge » 16 déc. 2015, 12:02

Bonjour,

oui il fonctionne quand je fais appelle à partir du navigateur, par contre je ne peux pas le tester en ligne de commande car je n'ai pas les droits sur le serveur.

Re: Cron php

par Ryle » 16 déc. 2015, 11:57

Bonjour,

Est-ce que ton script fonctionne :
- quand tu l'appelles via son url dans le navigateur ?
- quand tu l'appelles en ligne de commande (avec l'instruction php), sans passer par le cron ?

Si la réponse est oui à l'une ou l'autre de ces questions, c'est que ton script fonctionne et que le problème se situe dans les droits du script, de l'utilisateur qui l'appel ou dans la tâche cron elle même :)

Cron php

par sebastien.lelarge » 16 déc. 2015, 11:10

Bonjour à tous,

j'ai dernièrement mis en place un script php qui génère un fichier csv.
ce script fonctionne très bien lorsque je l'appelle dans un navigateur.
J'ai ensuite demandé à ma DSI de programmer un cron : résultat ça ne fonctionne pas !
du coup plusieurs interrogations ? ai je oublié quelque chose dans mon script ?

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
// la variable qui va contenir les données CSV
$outputCsv = '';

// Nom du fichier final
$fileName = 'villes_'.date('Y_m_d').'.csv';

$requete = "requete")
";
$sql = mysql_query($requete);
if(mysql_num_rows($sql) > 0)
{
$i = 0;

while($Row = mysql_fetch_assoc($sql))
{
$i++;

// Si c'est la 1er boucle, on affiche le nom des champs pour avoir un titre pour chaque colonne
if($i == 1)
{
foreach($Row as $clef => $valeur)
$outputCsv .= trim($clef).';';

$outputCsv = rtrim($outputCsv, ';');
$outputCsv .= "\n";
}

// On parcours $Row et on ajout chaque valeur à cette ligne
foreach($Row as $clef => $valeur)
$outputCsv .= trim($valeur).';';

// Suppression du ; qui traine à la fin
$outputCsv = rtrim($outputCsv, ';');

// Saut de ligne
$outputCsv .= "\n";

}

}
else
exit('Aucune donnée à enregistrer.');

// Entêtes (headers) PHP qui vont bien pour la création d'un fichier Excel CSV
// header("Content-disposition: attachment; filename=".$fileName);
// header("Content-Type: application/force-download");
// header("Content-Transfer-Encoding: application/vnd.ms-excel\n");
// header("Pragma: no-cache");
// header("Cache-Control: must-revalidate, post-check=0, pre-check=0, public");
// header("Expires: 0");

file_put_contents("FICHIERS/$fileName", $outputCsv);

echo $outputCsv;


exit();
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++