2017-07-10 2 views
7

J'ai un problème qui ne se produit que sur mon système live. Le système fonctionne avec zend2 et PHP7. Le problème est que mon warning.log est flodded avec le message suivant:Tableau attendu pour une erreur d'image dans le framework zend2

2017-07-10T08: 43: 50 + 02: 00 ERR: array prévue pour le cadre X { "Code": 0, "Fichier ":" vendeur/zendframework/zend-log/src/Formatter/base.php », "ligne": 105}

le X est un nombre compris entre 0 et 25. a la fin de ces nombreuses erreurs que je obtenir un autre:

2017-07-10T10: 29: 34 + 02: 00 ERR: Impossible d'écrire { "code": 0, "fichier": "vendeur/zendframework/zend-lo g/src/Formatter/base.php », « Ligne »: 111}

je ne vois pas une trace de pile appropriée pour voir où cela vient et je ne peux pas reprocude le problème sur mon locale machine à dev.

Toute aide serait appréciée.

Editer: Un collègue m'a dit que ce message d'erreur venait du niveau C de PHP7. Quelqu'un at-il une idée de comment obtenir une bonne trace de pile? Ou quel pourrait être le problème?

J'ai essayé d'attraper l'erreur avec

...try{ 
    return (string) $value; 
} catch(\Throwable $e){ 
    file_put_contents('error.txt',var_export($e,true),FILE_APPEND); 
    file_put_contents('value.txt',var_export($value,true),FILE_APPEND); 
    return (string) $value; 
} 

mais il semble que cette erreur ne pouvait pas être pris. Cela suggère que l'information de mon collègue est correcte.

+0

J'ai eu cette erreur lorsque PHP était incapable d'écrire un fichier dans un répertoire spécifique. Le répertoire contenant les fichiers journaux est-il accessible en écriture pour php? – Marcel

+0

Oui! Presque tous les répertoires du projet ont toutes les permissions possibles (777). – MrSmith

+0

Est-ce que 'xdebug' a été activé sur votre système live? –

Répondre

0

Une idée pour votre try/catch:

Zend\Stdlib\ErrorHandler::start(E_ALL); 
$return = (string) $value; 
$exception = Zend\Stdlib\ErrorHandler::stop(); 

file_put_contents('error.txt', var_export($exception, true), FILE_APPEND); 
file_put_contents('value.txt', var_export($value, true), FILE_APPEND); 

return $return; 
+0

J'ai essayé le code ci-dessus avec un petit changement ('if ($ exception! == null)') autour de 'file_put_contents' mais jusqu'ici les fichiers sont inexistants. Ma conjecture est que cette erreur ne peut pas être attrapée car elle est "lancée" dans le niveau C de PHP. – MrSmith