Bonjour,
J'ai un fichier cron.php qui s'exécute parfaitement si j'y accède par son url web, mais qui échoue si je le fait exécuter par une tâche cron.
Le problème, c'est que OVH ne donne absolument aucune information sur l'erreur. Tout ce que je sais, grâce aux logs, c'est que j'ai un "exitcode: 255". Je ne comprends pas comment un développeur est sensé déboguer avec ce pauvre indice, surtout quand la tâche cron ne peut être exécuté qu'une fois par heure?
Quel est l'origine du problème de l'erreur "exitcode: 255" ? J'ai beaucoup de lignes et pas mal de fichiers, sans erreur je sais pas où chercher, c'est ridicule.
- Est-ce que c'est parce que mon script retourne des var_dump que cela plante?
- Est-ce que parce que le script a du mal avec un chemin lorsqu'il est utilisé en tâche cron?
Merci d'avance :)
Tâche cron - exitcode: 255
Related questions
- Connexion à mon compte client
156969
13.02.2019 09:51
- Serveur non sécurisé, celui-ci ne supporte pas FTP sur TLS
128071
03.09.2018 14:46
- reCAPTCHA erreur pour le propriétaire du site : clé de site non valide
112313
14.02.2019 16:17
- [FAQ] Comment mettre à jour mon site pour supporter Apache 2.4 ?
99541
28.07.2017 11:39
- Passage en php 7.4
98769
30.06.2020 05:05
- Augmenter taille PHP Post Max Size sur mutualisé ?
93115
04.12.2019 21:52
- Deploy d'un projet Node JS
92149
12.10.2016 20:18
- The requested URL / was not found on this server
92137
02.03.2017 18:25
- Ce site est inaccessible Impossible de trouver l'adresse DNS du serveur
91985
16.10.2016 16:24
- NextCloud sur mutualisé
91960
07.04.2017 08:42
Bonjour,
ce sont des chemins relatifs dans le script ?
Cordialement, janus57
Bonjour Janus,
J'ai envoyé mon message initial par erreur, sans l'achever.... Je voulais partager le code ci-dessous. Ce sont les deux seuls endroits ou il y a des require_once().
1) Appel à spl_autoload_register().
spl_autoload_register(static function (string $fqcn) {
// $fqcn contient Domain\Forum\Message
// remplaçons les \ par des / et ajoutons .php à la fin.
// on obtient Domain/Forum/Message.php
$path = str_replace('\\', '/', $fqcn) . '.php';
// puis chargeons le fichier
if (file_exists(__DIR__.'/'.$path)) {
require_once(__DIR__.'/'.$path);
}
});
use App\Domain\Utils\Utils;
Notes:
J'utilise des `use` (par exemple: `use App\Domain\Utils\Utils` en haut de certains de mes fichiers php). L'appel à spl_autoload_register() permet de charger les fichiers requis. Par exemple la ligne `use App\Domain\Utils\Utils;` va charger automatiquement le fichier `App/Domain/Utils/Utils.php`.
2) require_once __DIR__.'/../vendor/autoload.php';
namespace App;
require_once __DIR__.'/../vendor/autoload.php';
use App\Domain\Database\Mysql;
use App\Domain\Utils\Utils;
use App\Domain\History\Log;
use App\Domain\Rapidapi\ScrapeNinja;
class App
{
...
La moche ligne `require_once __DIR__.'/../vendor/autoload.php'` me permet de charger un package que j'ai installé via composer. Ce n'est probablement pas la bonne méthode, mais malgré ma patience et mes recherches je n'ai pas trouvé comment charger ce fichier autrement pour l'utiliser avec une tâche cron.
Voilà, ce sont vraiment les deux endroits ou j'include des fichiers. Le problème vient de là tu penses?
Bonjour,
En mettant ces lignes au tout début de votre script, les erreurs seront visibles dans les logs.
error_reporting(E_ALL);
ini_set('display_errors', '1');
ini_set('log_errors', '1');
Merci je vais essayer ca ! Plus qu'à attendre 40 minutes
Et si votre cron invoquait la page web plutôt que le script ?
Ainsi votre script sera exécuté dans l'environnement du serveur web.
Je ne suis pas sûr de comprendre? Le champ _Commande à exécuter_ ne permet pas de mettre d'URL

Ou alors tu veux dire que la tâche exécute par exemple trucmuche.php et que dans trucmuche.php je fais un appel curl à cron.php qui lui va exécuter tout le code?
Tu lances une tâche de type shell, (exemple.sh)
Ce fichier exemple.sh pourrait contenir :
#!/bin/bash
wget -o /dev/null -O /dev/null https://tonsite.com/exemple.php
et mettre la permission execute sur ce fichier
Je ne pense pas avoir accès à ça avec mon offre pro2014