Aujourd'hui, cette erreur est arrivé à moi aussi, et je pris conscience des raisons pour lesquelles il peut arriver (parmi d'autres possibles raisons).
APC identifie correctement chaque classe par un nom complet, qui comprend l'espace de noms des classes. Malheureusement, vous pouvez vous référer à la même classe avec des noms différents.
Par exemple:
J'ai eu une fausse déclaration « utilisation » dans mon code, l'importation d'une classe sans espaces de noms comme si elle avait été à l'intérieur d'un espace de noms.
La classe, dites « MyClass » était dans l'espace de noms « \ », ce qui signifie était « \ MyClass » son nom correct et complet.
À un certain moment, la classe a été renvoyé par son nom non qualifié « MyClass » et nous avons obtenu autochargée. Dans un autre fichier, j'ai (à tort) fait référence à la classe avec un préfixe d'espace de nommage dans une instruction use, dites "use \ SomeNamespace \ MyClass;". Par conséquent la classe a été (encore) passée à ma méthode __autoload() globale, mais avec un nom différent. Pour le rendre pire, la méthode de chargement automatique était assez intelligente pour trouver la classe de toute façon.
Instantanément, mon script a cessé de fonctionner et tout ce qui s'est passé était APC écrivant "[apc-error] Impossible de redéclarer classe ..." dans le serveur Web Apache error.log. Mes pages n'étaient plus disponibles.
Ce n'est pas un bug d'APC que ce soit, mais simplement un comportement correct.
Dans mon cas, cela m'a aidé à désactiver temporairement APC (afin que mon script s'exécute indépendamment du conflit) et à connecter une instruction echo dans ma fonction __autoload pour produire une liste des paramètres passés. La classe chargée avec un mauvais nom s'afficherait rapidement, et je pourrais le réparer et réactiver APC.
Espérons que cela aide quelqu'un.
Je marquerai votre réponse comme acceptée. Il a fourni un correctif (qui m'a permis de continuer à travailler), mais n'a pas expliqué pourquoi j'ai dû mettre la config apc.stat à zéro (off). Au moins cela fonctionne, donc je peux continuer à développer sur ma boîte de fenêtres. Je ne vais pas avoir ce problème lorsque je passe sur mon serveur, qui a un système d'exploitation REAL (pas une souris mickey un). –
Si possible, vous pouvez essayer une version plus récente de php/APC et voir si l'erreur persiste. –