J'ai une fonction forbid()
qui est censée écrire dans un fichier journal dont l'accès a été refusé, avec une raison pour le refus. Pour une raison quelconque, il n'écrit pas dans le fichier journal.fputs n'écrit pas avant que l'en-tête 403 ne soit déclenché
// function to forbid access
function forbid($reason) {
// explain why
if ($reason) fputs($file, "=== ERROR: " . $reason . " ===\n");
fputs($file, "*** ACCESS DENIED ***" . "\n\n\n");
fclose($file);
// forbid
header("HTTP/1.0 403 Forbidden");
exit;
}
$file
est défini plus tôt dans le code, et d'autres fputs()
avant cette fonction fonctionnent correctement; Je pense que c'est quelque chose à propos de l'en-tête 403 l'empêchant d'écrire.
Et je pense que c'est quelque chose à propos de '$ file' qui n'est pas défini dans une portée de fonction. –
Si vous voulez utiliser '$ file' dans la fonction, vous devez utiliser une instruction' use' ou la passer directement à votre fonction en tant que paramètre. –
C'est une définition de fonction nommée, 'use' est pour les fonctions anonymes. –