Paramètre DEBUG = False provoque des Erreur 500
Une fois que j'ai changer le DEBUG = False
, mon site va générer 500 (à l'aide de wsgi & manage.py runserver), et il n'y a pas d'erreur d'infos dans le journal des erreurs d'Apache et il fonctionnera normalement quand je change de debug
à True
.
Je suis en utilisant Django 1.5 & Python 2.7.3
voici Apache log d'accès et sans aucun journal dans le journal des erreurs d'apache
www.beta800.net:80 222.247.56.11 - - [28/Feb/2013:13:42:28 +0800] "GET /HTTP/1.1" 500 257 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"
www.beta800.net:80 222.247.56.11 - - [28/Feb/2013:13:42:28 +0800] "GET /favicon.ico HTTP/1.1" 500 257 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"
www.beta800.net:80 222.247.56.11 - - [28/Feb/2013:13:42:28 +0800] "GET /favicon.ico HTTP/1.1" 500 257 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.97 Safari/537.22"
Voici mon fichier de paramètres:
import os.path
DEBUG = False
#TEMPLATE_DEBUG = DEBUG
HERE = os.path.dirname(__file__)
ADMINS = (
('admin', '[email protected]'),
)
MANAGERS = ADMINS
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'zdm', # Or path to database file if using sqlite3.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'passwd', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
# Local time zone for this installation. Choices can be found here:
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
# although not all choices may be available on all operating systems.
# In a Windows environment this must be set to your system time zone.
TIME_ZONE = 'America/Chicago'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en-us'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale.
USE_L10N = True
# If you set this to False, Django will not use timezone-aware datetimes.
USE_TZ = True
# Absolute filesystem path to the directory that will hold user-uploaded files.
# Example: "/home/media/media.lawrence.com/media/"
MEDIA_ROOT = ''
# URL that handles the media served from MEDIA_ROOT. Make sure to use a
# trailing slash.
# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
MEDIA_URL = ''
# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
#STATIC_ROOT = os.path.join(HERE, 'static').replace('\\','/')
# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'
#STATIC_ROOT = os.path.join(HERE, 'static').replace('\\','/')
S= os.path.join(HERE, 'static').replace('\\','/')
# Additional locations of static files
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'/home/zdm/static',
)
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# Make this unique, and don't share it with anybody.
SECRET_KEY = '9a7!^gp8ojyk-^^d@*whuw!0rml+r+uaie4ur$(do9zz_6!hy0'
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)
ROOT_URLCONF = 'zdm.urls'
# Python dotted path to the WSGI application used by Django's runserver.
WSGI_APPLICATION = 'zdm.wsgi.application'
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
'/home/zdm/templates',
)
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
# Uncomment the next line to enable the admin:
'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
'zdm',
'portal',
'admin',
'tagging',
)
- Oui, j'ai ajouter 403 & 404 500 fichier html dans mes modèles dir
- Avez-vous des 500.html et 404.html et 403.html les fichiers en place? Je crois me rappeler avoir un problème avec un projet de déploiement qui n'ont pas ces fichiers dans la racine de mon répertoire des modèles.
- Si votre site génère une erreur 500, il devrait y avoir quelques informations dans le log d'apache, vous pouvez passé une bonne partie de la fin du fichier journal des erreurs pour les gens à regarder.
- comment avez-vous gérer ou appelez l'erreur? 500 va générer si vous changez de débogage parce que le système n'a pas détecté existant 404 modèles
- ajouter un peu de journal d'accès à ma question. merci
- Vous souhaiterez peut-être modifier votre SECRET_KEY maintenant qu'il est publiquement disponible...
- Ce n'est pas la réponse pour tout le monde. Comme indiqué ci-dessous dans stackoverflow.com/a/37218484/4028977, il pourrait y avoir de nombreuses raisons pour lesquelles cela se produit. Avec quelques simples journalisation, vous pouvez trouver sans approximation.
Vous devez vous connecter pour publier un commentaire.
Django 1.5 introduit la hôtes autorisés réglage qui est nécessaire pour des raisons de sécurité. Un fichier de paramètres créés avec Django 1.5 a cette nouvelle, section qui vous devez ajouter:
Ajouter votre hôte ici comme
['www.beta800.net']
ou['*']
pour un test rapide, mais ne pas utiliser['*']
pour la production.['*']
dans la production.ALLOWED_HOSTS
à['*']
des fins de test et encore 500 après le redémarrage du serveur. Aucun signe de problème dans le journal du serveur, seulement ce satané HTTP 500. Comment puis-je obtenir plus d'informations sur l'erreur sans compter surDEBUG = True
?django-pipeline
le comportement lors de la statique n'a pas été recueillies encore. Comme une pointe générale, placer un point d'arrêt dans Djangohandle_uncaught_exception
méthode pour vous aider à comprendre ce qui se passe ici.handle_uncaught_exception
méthode sonne toujours comme une astuce utile si!Je sais que c'est tard, mais je me suis retrouvé ici avec une recherche pour mon erreur 500 avec
DEBUG=False
, dans mon cas, il n'a à son tour d'être leALLOWED_HOSTS
mais j'ai été en utilisantos.environ.get('variable')
pour remplir les hôtes, je n'ai pas remarqué jusqu'à ce que j'ai activé la journalisation, vous pouvez vous connecter toutes les erreurs dans un fichier avec le ci-dessous et dans le fichier journal, même quandDEBUG=False
:Dans mon cas, la lecture des docs d'applications tierces correctement m'a sauvé.
Le coupable? django_compressor
J'avais
DEBUG = True
m'a toujours donné 500. Pour le fixer, j'ai besoin d'une ligne dans mes paramètres, pour obtenir l'exécution deJ'ai rencontré le même problème récemment dans Django 2.0. J'ai été en mesure de régler le problème par la mise en
DEBUG_PROPAGATE_EXCEPTIONS = True
. Voir ici: https://docs.djangoproject.com/en/2.0/ref/settings/#debug-propagate-exceptionsDans mon cas, l'erreur a été
ValueError: Missing staticfiles manifest entry for 'admin/css/base.css'
. J'ai fixé localement par l'exécution depython manage.py collectstatic
.Droit, dans Django 1.5 si DEBUG = False, configurer ALLOWED_HOSTS, l'ajout de domaines, sans le numéro de port. exemple:
Vous devez également vérifier votre Url de tous sur la place. Lorsque le
DEBUG
est fixé àFalse
, toutes les URLs sans fuite/
sont traités comme un bug, contrairement à lorsque vous avezDEBUG = True
, auquel cas Django ajoute/
partout où elle est absente. Donc, en résumé, assurez-vous que tous les liens à la fin avec un slash PARTOUT.DEBUG=False
peut dévoiler des erreurs d'importation ainsi: stackoverflow.com/questions/25676453/...J'ai une petite histoire pour tous. Après avoir atteint cette page, j'ai dit "Eureka! Je suis sauvé. Que DOIT être mon problème." J'ai donc inséré le nécessaire
ALLOWED_HOSTS
liste dans setting.py et... rien. La même vieille erreur 500. Et non, ce n'était pas par manque d'un 404.html fichier.Donc pour 2 jours, j'ai s'active moi-même avec les théories, comme celle qu'il avait quelque chose à faire avec de servir les fichiers statiques (comprendre que je suis un noob et les noobs ne savent pas ce qu'ils font).
Donc qu'est-ce? Il est maintenant Monsieur le Modérateur, que nous en venons à une astuce utile. Alors que mon développement Django est la version 1.5.quelque chose, mon serveur de production version 1.5.quelque chose de+1... ou peut-être plus de 2. Quoi que ce soit. Et donc après j'ai ajouté le
ALLOWED_HOSTS
à la version de bureau de settings.py, qui manquait de ce hwjp demandé--- une "valeur par défaut dans settings.py peut-être avec un commentaire explicatif"--- j'ai fait de même sur le serveur de production avec le bon domaine pour qu'il.Mais j'ai manqué de remarquer que sur le serveur de production avec la dernière version de Django, il y A une valeur par défaut dans settings.py avec un commentaire explicatif. Il était bien en dessous de l'endroit où j'ai fait mon entrée, hors de la vue sur le moniteur. Et bien sûr, la liste est vide. D'où ma perte de temps.
local_settings.py
pour chaque environnement et de l'importer ensuite danssettings.py
.