Comment puis-je me débarrasser d'un filesize() avertissement en PHP?
Autre que de tourner des avertissements.. ce que je peux faire dans mon code pour se débarrasser de ce message d'erreur:
warning: filesize() [function.filesize] stat failed for .... on line 152
Le code est:
$store_filesize = filesize($file->filepath);
et qu'est-ce que
null parfois, mais d'autres fois c'est le chemin d'accès au fichier
si c'est
U peut ajouter
$file->filepath
?null parfois, mais d'autres fois c'est le chemin d'accès au fichier
si c'est
null
c'est quand vous obtenez le message d'avertissement.U peut ajouter
if($file->filepath != null)
OriginalL'auteur Shamoon | 2011-06-17
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr si c'est ce que vous voulez (par exemple, je ne suis pas clair si vous voulez savoir pourquoi cela se passe et de travailler autour de cela), mais si vous êtes simplement à la recherche de supprimer les erreurs, vous pouvez généralement utiliser @ devant le nom de la fonction.
par exemple
Je pense que abordées que dans ma réponse, l'OP n'a pas dit pourquoi. Il n'est pas toujours une mauvaise pratique, cela dépend vraiment si c'est approprié de le faire. Je ne présumez pas de vérifier avec is_readable() est un bon moyen de supprimer toutes les erreurs.
C'est toujours une mauvaise pratique. Il y a des constructions d'un langage de traiter avec des erreurs plus en douceur, y compris
try...catch
etset_error_handler
. PHP dynamique des changementserror_reporting
à 0 avant l'exécution de l'supprimé l'instruction, puis le modifie, même si il n'y a pas d'erreur. Pourquoi payer un processus de temps pour obtenir moins d'informations sur les échecs dans votre code? Pourquoi payer le temps processeur pour supprimer les erreurs qui n'existent pas? La bonne pratique veut que vous écrivez le trivial code nécessaire pour gérer ou prévenir une erreur plutôt que de simplement l'ignorer. On devrait jamais l'utilisation@
en PHP. Jamais.Pas tout ce qui ne déclenche une exception, et non pas tout ce qui échoue est de conséquence, parfois, c'est juste un nice-to-have. Emballage try/catch avec rien, n'est-ce pas une meilleure pragma (et n'est pas libre, ce qui est pire, si le service ne parvient pas souvent).
NB: je certainement n'est généralement pas encourager les gens à utiliser @ - et de l'utiliser exceptionnellement rarement moi - même, mais tout dépend du contexte. Encourager les gens à écrire vide blocs try/catch a des conséquences trop (le pire, je dirais).
OriginalL'auteur Iain Collins
OriginalL'auteur Ondřej Mirtes
Ne pas appeler
filesize
sauf si le fichier existe réellement:Docs pour
is_file
: http://php.net/manual/en/function.is-file.php🙂
filesize
si vous disposez des autorisations pour le répertoire contenant.is_readable
vérifie les autorisations pour le fichier lui-même, de sorte que vous êtes de retour 0 bien que vous pourriez obtenir plus d'informations dans certains cas. Aussi, ce qui introduit une condition de course - si le fichier est supprimé juste avantfilesize
, la fonction échouera toujours.filesize
ne lèvera une exception, il sera? Par conséquent, votre changement de code n'a aucun effet. Aussi, si l'emballage dans du try..catch, ne pourriez-vous pas ignorer lais_file
vérifier ensuite?OriginalL'auteur Chris Baker
N'oubliez pas de vérifier
null
:OriginalL'auteur Neal
Vérifier si le fichier existe, est fichier et est lisible
is_readable
appel. En outre, vous pouvez disposer des autorisations à obtenir la taille du fichier, mais pas lire le fichier, de sorte que ce code arbitrairement de ne pas obtenir le fichier de la taille de certains fichiers.OriginalL'auteur Maxim Krizhanovsky