Хорошо, я исчерпал эту проблему на своем общем сервере в Bluehost, и я не смог найти никаких идей.
Я загрузил свое приложение, и все, кажется, работает нормально, за исключением одной вещи, которую я использую для загрузки фотографий (которая является ядром сайта). Я использую приложение stdimage2 Django (форк stdimage), и оно отлично работало на сервере разработки (Ubuntu 10.04). Но сейчас у него серьезные проблемы, и я ищу любые возможные идеи или предположения о вещах, которые мне не хватает.
Вот ошибки, которые печатаются (это с четырьмя картинками, отправляемыми загрузчиком как отдельные запросы один за другим):
[Wed Dec 21 09:47:03 2011] [warn] [client 128.187.97.6] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server, referer: http://gallery.fernstenfamily.com/backend/upload/1/
[Wed Dec 21 09:47:03 2011] [error] [client 128.187.97.6] Premature end of script headers: mySite.fcgi, referer: http://gallery.fernstenfamily.com/backend/upload/1/
[Wed Dec 21 09:47:03 2011] [warn] RewriteCond: NoCase option for non-regex pattern '-f' is not supported and will be ignored.
[Wed Dec 21 09:47:03 2011] [warn] [client 128.187.97.6] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server, referer: http://gallery.fernstenfamily.com/backend/upload/1/
[Wed Dec 21 09:47:03 2011] [error] [client 128.187.97.6] Premature end of script headers: mySite.fcgi, referer: http://gallery.fernstenfamily.com/backend/upload/1/
[Wed Dec 21 09:47:04 2011] [warn] [client 128.187.97.6] (104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server, referer: http://gallery.fernstenfamily.com/backend/upload/1/
[Wed Dec 21 09:47:04 2011] [error] [client 128.187.97.6] Premature end of script headers: mySite.fcgi, referer: http://gallery.fernstenfamily.com/backend/upload/1/
[Wed Dec 21 09:47:05 2011] [error] mod_fcgid: process /home3/fernsten/public_html/ffamily/gallery/mySite.fcgi(22492) exit(communication error), get unexpected signal 11
Вот как выглядит мой fcgi-файл:
#!/home3/fernsten/local/Python-2.7/bin/python
import sys, os
print "sys.path is ", sys.path
#add a custom Python path and pray it works dddd
sys.path.insert(0, "/home3/fernsten/local/lib/python2.7/site-packages")
sys.path.insert(0, "/home3/fernsten/local/lib/python2.7")
sys.path.insert(0, "/home3/fernsten/local/lib/python2.7/site-packages/flup-1.0.2-py2.7.egg")
sys.path.insert(0, "/home3/fernsten/django_projects")
sys.path.insert(0, "/home3/fernsten/django_projects/gallery")
sys.path.insert(0, "/home3/fernsten/local/lib/python2.7/site-packages/MySQL_python-1.2.3- py2.7-linux-x86_64.egg")
os.chdir("/home3/fernsten/django_projects/gallery")
os.environ['DJANGO_SETTINGS_MODULE'] = "gallery.settings"
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
И, наконец, вот функция, где он умирает:
if request.method == 'POST':
result = []
newform = Photo()
newform.image= request.FILES.get('file')
newform.album=Album.objects.get(pk=album_pk)
newform.save()
result.append({"name":"Uploaded image",
"size":newform.image.size,
"url":MEDIA_URL + newform.image.url,
"thumbnail_url": newform.image.url.replace(".",".thumbnail."),
"delete_url":'/backend/delete_img/' + str(newform.pk)+'/',
"delete_type":"POST",
})
response_data = simplejson.dumps(result)
return HttpResponse(response_data, mimetype='application/json')
return render_to_response('backend/upload_images.html',{'album_pk':album_pk},context_instance=RequestContext(request))
Я вполне уверен, что это происходит в этой области, потому что, когда я выполняю newform.save () stdimage2 делает вещи в фоновом режиме, такие как переименование загруженного изображения и создание и присвоение имени миниатюре. Изображение переименовывается, но миниатюра не создается.
Любые идеи были бы потрясающими, так как я не смог найти много о том, что может быть не так.
UPDATE
Я также не могу загрузить изображение с помощью интерфейса администратора в Django. Ну, я могу загрузить изображение, но оно ломается в этот момент. StdImage2 изменяет имя загруженных изображений в соответствии с определением модели, но не создает миниатюру. В базе данных хранится URL-адрес изображения с именем загруженного изображения, а не сгенерированного.
Чтобы покрыть все мои базы, я скопировал файлы с сервера и запустил его локально без каких-либо проблем. Что только вызвало больше путаницы и разочарования.
ОБНОВЛЕНИЕ 2
После использования оболочки Django и такой попытки (по крайней мере, я надеюсь, что я сделал это правильно, я получаю следующую ошибку:
image = Image.open('/home3/fernsten/www/ffamily/media/media/albums/1/image_1.jpeg')
>>> newform.image = image
>>> newform.album = Album.objects.get(pk=1)
>>> newform.save()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home3/fernsten/local/lib/python2.7/site-packages/django/db/models/base.py", line 460, in save self.save_base(using=using, force_insert=force_insert, force_update=force_update)
File "/home3/fernsten/local/lib/python2.7/site-packages/django/db/models/base.py", line 543, in save_base for f in meta.local_fields if not isinstance(f, AutoField)]
File "/home3/fernsten/local/lib/python2.7/site-packages/django/db/models/fields/files.py", line 253, in pre_save
if file and not file._committed:
File "/home3/fernsten/local/lib/python2.7/site-packages/PIL/Image.py", line 512, in __getattr__
raise AttributeError(name)
AttributeError: _committed