web-dev-qa-db-fra.com

PHP exit status 255: qu'est-ce que cela signifie?

J'ai récemment compilé un binaire PHP 5.2.9, et j'ai essayé d'exécuter quelques scripts PHP avec lui. Je peux exécuter certains scripts sans problème, mais l'un d'eux s'arrête son exécution à mi-chemin, se terminant sans erreur ni avertissement. Le code d'état renvoyé du processus est 255.

J'ai lu dans le manuel qu'un tel statut est "réservé". La question est: pour quoi?

Je crois que cela a quelque chose à voir avec les dépendances manquantes dans l'exécutable PHP, mais je ne peux pas en être sûr.

Tout le monde sait ce que signifie un code de sortie de 255?

P.S. Il n'y a aucune erreur dans les scripts PHP, ils fonctionnent OK sur d'autres machines.

34
Silvio Donnini

255 est une erreur, je pourrais reproduire ce même code de sortie en ayant une erreur fatale.

Cela signifie que votre rapport d'erreurs est en quelque sorte masqué, il existe des causes possibles à cela:

  • error_reporting n'est pas défini et php ne signale aucune erreur
  • Une @ (opérateur de suppression d'erreur) masque la sortie de l'erreur
  • STDERR est redirigé ailleurs (php -f somefile.php 2>/dev/null, supprimez la redirection)
  • Cela pourrait toujours être une erreur interne en raison de dépendances manquantes et qu'une erreur fatale a le même code de sortie qu'un crash de programme.
37
Weboide

Cela pourrait également signifier que /etc/php5/cli/php.ini (sur Debian/Ubuntu) ou /etc/php.ini (sur RHEL/CentOS/etc.) a display_errors = Off ce qui signifie que les erreurs ou avertissements des scripts de ligne de commande n'iront nulle part, à moins que log_errors = On (voir aussi le error_log réglage).

Essayez d'exécuter vos scripts avec un script wrapper qui utilise php -d display_errors=on ...

10
Alastair Irvine

Dans mon cas, c'était la mort de xDebug en raison d'un faible xdebug.max_nesting_level valeur.

0
zored

Cela pourrait également signifier que

  • /etc/php5/cli/php.ini (sur Debian/Ubuntu)

  • /etc/php.ini (sur RHEL/CentOS/etc.)

a mis

display_errors = Off 

ce qui signifie que toutes les erreurs ou avertissements des scripts de ligne de commande n'iront nulle part, sauf si

log_errors = On 

Voir également le paramètre error_log.

Essayez d'exécuter vos scripts avec un wrapper

0
Alauddin

Cela peut être dû à PHP messages d'erreur supprimés (la ligne commence par @). J'ai trouvé la ligne par

grep -r "@" src/ 

puis commenté le @. Après cela, j'ai eu l'erreur réelle et j'ai pu la réparer facilement. J'ai également remarqué par la suite que PHPStorm avait déjà découvert la même erreur, mais je ne l'avais pas corrigé/remarqué.

0
Antti Hätinen

Localisez le php.ini utilisé par votre php-cli.

brain@cordova:~% php -i | grep "php.ini"

8:Configuration File (php.ini) Path => /etc/php/7.3/cli
9:Loaded Configuration File => /etc/php/7.3/cli/php.ini

Assurez-vous que les paramètres display_errors sont actifs.

brain@cordova:~% php -i | grep "error"

106:display_errors => On => On
114:error_log => /tmp/php_errors.log => /tmp/php_errors.log
116:error_reporting => 22527 => 22527
134:log_errors => On => On

Assurez-vous que display_errors et log_errors sont ON.

Définissez l'emplacement error_log pour consigner les erreurs dans le fichier.

Les messages d'erreur devraient s'afficher maintenant.

0
Brain90