Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2011, 16h19   #1
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
Par défaut Erreurs lors d'une mise en place d'une requête cron PHP

Bonjour à tous,

Je viens de basculer d'un serveur mutualisé OVH vers un serveur dédié Dedibox.
J'ai tout transféré, mais j'ai quelques soucis avec la bascule des mes taches planifiées.

J'ai un script php cron.php qui doit s'exécuter 1 fois par jour.
Voilà le contenu du script :
Code php :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$_GET['import']='rssfeed';
$_GET['import_feed']='yes';
$_GET['external']='1';
   if ( !defined('WP_ADMIN') )
     define('WP_ADMIN', TRUE);
   if ( isset($_GET['import']) && !defined('WP_LOAD_IMPORTERS') )
      define('WP_LOAD_IMPORTERS', true);
   require_once('../../../wp-config.php');
   require_once('../../../wp-admin/includes/class-wp-importer.php');
   require_once 'rss-importer.php';
   $rss_import1 = new RSS_Import1();
   $rss_import1 = $rss_import1->dispatch();
?>

Sur mon mutualisé OVH, j'utilisais leur planificateur de tache.
Mais là je voudrai utilisé la table CRON.

Je me connecte donc en SSH avec Putty, et j'ajoute à ma cron table la ligne suivante :
Code :
0 1 * * * /usr/bin/php5 /var/www/vhosts/allzedeals.com/httpdocs/wp-content/plugins/rss-feeder/cron.php
pour que le script s'execute tous les jours à 1h00 du matin.

Mais j'ai le message suivant :
Code :
1
2
3
4
5
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imap.ini on line 1 in Unknown on line 0
PHP Warning:  Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
PHP Warning:  require_once(): Unable to access ../../../wp-config.php in /var/www/vhosts/allzedeals.com/httpdocs/wp-content/plugins/rss-feeder/cron.php on line 15
PHP Warning:  require_once(../../../wp-config.php): failed to open stream: No such file or directory in /var/www/vhosts/allzedeals.com/httpdocs/wp-content/plugins/rss-feeder/cron.php on line 15
PHP Fatal error:  require_once(): Failed opening required '../../../wp-config.php' (include_path='.:') in /var/www/vhosts/allzedeals.com/httpdocs/wp-content/plugins/rss-feeder/cron.php on line 15
Je ne comprends rien à ce message d'erreur ?
Est-ce que cela vient des droits d'accès au fichier ? faut-il que je fasse des chmod +x pour certains de ces fichiers ou dossier ?

Merci de votre aide.

Bonne fin de journée.
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 16h41   #2
Responsable Modération
 
Avatar de ok.Idriss
 
Homme Idriss Neumann
Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)
Inscription : février 2009
Messages : 1 982
Détails du profil
Informations personnelles :
Nom : Homme Idriss Neumann
Âge : 21
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Consultant en SSII et étudiant au CNAM Paris (ingénieur SI)

Informations forums :
Inscription : février 2009
Messages : 1 982
Points : 6 101
Points : 6 101
Bonjour.

As-tu essayé de lancer le script manuellement (sans passer par cron) ? As-tu les mêmes erreurs ?

Cordialement,
Idriss
ok.Idriss est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 17h00   #3
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
Je n'ai pas exactement les mêmes erreurs lorsque j'execute la requête directement.

Voilà le message :
Code :
1
2
3
4
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf                                                                              .d/imap.ini on line 1 in Unknown on line 0
PHP Warning:  Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
PHP Warning:  set_time_limit(): Cannot set time limit in safe mode in /var/www/vhosts/allzedeals.com/httpdocs/wp-content/plugins/rss-feeder/rss-importer.php on line 13
PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 81 bytes) in /var/www/vhosts/allzedeals.com/httpdocs/wp-includes/pomo/mo.php on line 204
Merci pour vos conseils.
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2011, 17h13   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Citation:
Je me connecte donc en SSH avec Putty, et j'ajoute à ma cron table la ligne suivante :
Mets ton cronjob dans la crontab d'apache vu que le fichier à inclure est dans /var/www (à moins que tu ne sois root). Ou si ce n'est pas possible, change les droits du fichier à inclure.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 10h07   #5
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
Bonjour,

Merci pour ce retour Benjamin,
Je suis désolé, mais vu que je début en gestion Serveur, j'ai besoin d'un peu plus de détails.
En SSH, je me log en root.
De quel fichier dois-je changer les droits ? et quels droits doivent être données ? x ? r ?
Merci d'avance.
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 10h25   #6
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Si tu as mis ce job dans la crontab de root, la piste de l'insuffisance des droits peut être écartée

En relisant, j'ai remarqué ça:
Citation:
require_once(../../../wp-config.php): failed to open stream
Je pense que tu n'est pas dans le bon répertoire au moment de l'exécution du script (la crontab doit faire s'exécuter les programmes dans /root ou quelque chose du genre).
Un chdir au début de ton code pourrait sûrement corriger le problème.
Pense également à rediriger l'output produit par le script vers un fichier de log

Code :
0 1 * * * /usr/bin/php5 /var/www/vhosts/allzedeals.com/httpdocs/wp-content/plugins/rss-feeder/cron.php > /tmp/rss_feeder_cron.log
par exemple.

Par ailleurs, pour t'éviter à l'avenir de rencontrer un problème similaire, je te recommande d'utiliser cette syntaxe:
Code :
1
2
3
4
5
6
 
// ne pas faire
include "../../test.php";
 
// faire
include dirname(dirname(__FILE__)) . 'test.php';
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 10h30   #7
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Citation:
Envoyé par Pierrick81 Voir le message
Bonjour,

Merci pour ce retour Benjamin,
Je suis désolé, mais vu que je début en gestion Serveur, j'ai besoin d'un peu plus de détails.
En SSH, je me log en root.
De quel fichier dois-je changer les droits ? et quels droits doivent être données ? x ? r ?
Merci d'avance.
J'ai oublié de le mentionner dans mon post précédent mais il est bien entendu impératif que le script ait les droits d'execution. Qui peuvent êtres donnés par:
Code :
$ chmod +x monscript.php
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 11h53   #8
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
Merci Benjamin pour tous ces éléments.

J'ai donc modifier mon fichier cron.php, en utilisant dirname(__file__).
Maintenant cela semble pointer au bon endroit.
J'ai bien vérifié et mon fichier cron.php a bien les droits en exécution.

J'ai fait pointer les logs dans un fichier comme tu dis. Le fichier se créé bien , mais le contenu est vide. Comment cela se fait-il ?

Maintenant j'ai le message suivant que je reçois :
Code :
1
2
3
4
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imap.ini on line 1 in Unknown on line 0
PHP Warning:  Directive 'safe_mode' is deprecated in PHP 5.3 and greater in Unknown on line 0
PHP Warning:  set_time_limit(): Cannot set time limit in safe mode in /var/www/vhosts/allzedeals.com/httpdocs/wp-content/plugins/rss-feeder/rss-importer.php on line 13
PHP Fatal error:  Allowed memory size of 33554432 bytes exhausted (tried to allocate 32 bytes) in /var/www/vhosts/allzedeals.com/httpdocs/wp-includes/pomo/mo.php on line 212
J'ai toujours les 2 mêmes premières lignes, où il parle de "safe_mode" et qui semble poser problème pour la fonction set_time_limit().

Ce qui m'embête le plus est au niveau de la mémoire, car il y a une fatale error mais peut-être est-ce aussi lié au "safe_mode" ?

Je vais creuser sur ce point du "safe_mode". Mais si vous voyez une solution, n'hésitez pas .

Merci d'avance.
P.
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 12h25   #9
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Citation:
Envoyé par Pierrick81 Voir le message
J'ai fait pointer les logs dans un fichier comme tu dis. Le fichier se créé bien , mais le contenu est vide. Comment cela se fait-il ?
Ton script n'écrit rien alors...

Comment se fait-il que tu arrives à pêter la limite mémoire ? Que fait ton script ?

Vérifie que tu n'a pas de boucle infinie qui tourne, ça vient sûrement de là...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 14h47   #10
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
Citation:
Ton script n'écrit rien alors...
Oui ça c'est possible, il n'est rien censé écrire.

Citation:
Comment se fait-il que tu arrives à pêter la limite mémoire ? Que fait ton script ?
Ce script importe des éléments à partir de flux XML. Il prend effectivement environ 2 minutes pour s'exécuter, mais auparavant je l'exécutais sur un OVH pro mutualisé sans aucun souci.
donc c'est étrange que ça ne passe pas !
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 15h22   #11
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Au pire tente de désactiver le safe mode: http://www.php.net/manual/en/ini.sec...#ini.safe-mode

Et mets la limite mémoire un peu plus haut pour voir si ça passe.
Sinon, c'est que tu as une boucle infinie ou quelque chose du genre...
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 16h58   #12
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
Effectivement, il faudrait que je désactive ça surtout, que c'est écrit en gros que c'est obsolète depuis PHP 5.3.
Et je tourne en 5.3 justement.

Par contre, je ne comprends pas trop quel php.ini modifié car lorsque je cherche les php.ini j'en trouve 4 :
Code :
1
2
3
4
/opt/psa/admin/conf/php.ini
/etc/php5/apache2/php.ini
/etc/php5/cgi/php.ini
/etc/php5/cli/php.ini
Au niveau de la boucle infine, il n'y a aucune raison, car le script n'a pas été modifié et il fonctionne parfaitement sur mon autre serveur mutualisé.

Et pour la première ligne du message d'erreur
Code :
PHP Deprecated:  Comments starting with '#' are deprecated in /etc/php5/cli/conf.d/imap.ini on line 1 in Unknown on line 0
Cela semble vouloir dire que les commentaires avec # sont désormais obsolètes. Par quoi faut-il les remplacer ?

Merci
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 17h04   #13
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
Remplace tes commentaires afin qu'ils suivent ce formalisme:
Code :
1
2
3
4
5
// un commentaire sur une ligne
/*
 un commentaire
 sur plusieurs lignes
*/
Comme en C par exemple.

C'est le fichier /etc/php5/cli/php.ini que tu dois éditer puisque les scripts PHP en cron sont lancés en mode CLI (Command Line Interface).
Si tu n'est pas sûr, lance cette commande pour vérifier:
Code :
$ php -r 'echo phpinfo();' | grep .ini
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/06/2011, 17h31   #14
Membre à l'essai
 
Inscription : décembre 2006
Messages : 169
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 169
Points : 21
Points : 21
YEESSS !

Merci beaucoup.

Juste pour bien comprendre, peux-tu me détailler le fonctionnement de la commande
Code :
$ php -r 'echo phpinfo();' | grep .ini
En gros on recherche la chaine ".ini" dans phpinfo() ?

à quoi sert le "-r" ?
Pierrick81 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 17h40   #15
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 011
Points : 5 011
permet d'executer directement un bout de code PHP, ensuite on filtre le résultat avec un grep puisque tout ce qui nous intéresse est l'emplacement du fichier ini.


__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h54.


 
 
 
 
Partenaires

Hébergement Web