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.
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:
@
(opérateur de suppression d'erreur) masque la sortie de l'erreurCela 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 ...
Dans mon cas, c'était la mort de xDebug en raison d'un faible xdebug.max_nesting_level
valeur.
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
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é.
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.