Изображение captcha не работает в моей рабочей среде, но devlopment в порядке - PullRequest
2 голосов
/ 24 марта 2011

Я пишу приложение rails на моей локальной машине (OSX 10.6.6,Rails3.0.1,WEBrick). Простая капча отлично работает. Когда я помещаю приложение на свой веб-сервер (Centos5.5,Rails 3.0.1,Phusion Passenger version 3.0.2), ошибка не обнаруживается, но изображение не отображается на сайте.

Я заметил, что /tmp имеет некоторые файлы, такие как simple_captcha20110324-19769-1bf4hah.jpg. Я открываю его на своем сервере, изображение является изображением с картинки. Поэтому я думаю, что генерация капчи работает, но что-то не так в производственной среде. Я отслеживаю процесс и обнаружил ioctl(27, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fffc3fad550) = -1 ENOTTY (Inappropriate ioctl for device). У вас есть предложения?

Информация о strace:

...
stat("/tmp/simple_captcha20110324-3073-14fnzd6.jpg", {st_mode=S_IFREG|0600, st_size=1808, ...}) = 0
stat("/tmp/simple_captcha20110324-3073-14fnzd6.jpg", {st_mode=S_IFREG|0600, st_size=1808, ...}) = 0
geteuid()                               = 500
getegid()                               = 500
getuid()                                = 500
getgid()                                = 500
access("/tmp/simple_captcha20110324-3073-14fnzd6.jpg", R_OK) = 0
open("/tmp/simple_captcha20110324-3073-14fnzd6.jpg", O_RDONLY) = 27
ioctl(27, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fffc3fad550) = -1 ENOTTY (Inappropriate ioctl for device)
brk(0x63b0000)                          = 0x63b0000
write(3, "\n\nStarted GET \"/simple_captcha/e"..., 133) = 133
clock_gettime(CLOCK_REALTIME, {1300937319, 188732000}) = 0
writev(11, [{"Status: ", 8}, {"200", 3}, {"\r\n", 2}, {"X-Powered-By: ", 14}, {"Phusion Passenger (mod_rails/mod"..., 44}, {"\r\n", 2}, {"Content-Disposition", 19}, {": ", 2}, {"inline; filename=\"simple_captcha"..., 37}, {"\r\n", 2}, {"Content-Transfer-Encoding", 25}, {": ", 2}, {"binary", 6}, {"\r\n", 2}, {"Content-Type", 12}, {": ", 2}, {"image/jpeg", 10}, {"\r\n", 2}, {"Cache-Control", 13}, {": ", 2}, {"private", 7}, {"\r\n", 2}, {"X-UA-Compatible", 15}, {": ", 2}, {"IE=Edge,chrome=1", 16}, {"\r\n", 2}, {"Set-Cookie", 10}, {": ", 2}, {"_newuser_session=BAh7CEkiD3Nlc3N"..., 275}, {"\r\n", 2}, {"X-Sendfile", 10}, {": ", 2}, ...], 39) = 623
shutdown(11, 1 /* send */)              = 0
close(11)                               = 0
...

UPDATE:

Я думаю, что какая-то ошибка в https://github.com/galetahub/simple-captcha может быть. Я выбрал эту ветку https://github.com/kares/simple_captcha Все ENV работают отлично!

Ответы [ 3 ]

1 голос
/ 27 апреля 2011

https://github.com/galetahub/simple-captcha использует send_file (из rails streaming api) для потоковой передачи изображения капчи. Вы включили mod-xsendfile в своей конфигурации apache?

0 голосов
/ 24 марта 2011

если я помню, что у captcha разные ключи для сред разработки и производства, вы уже проверили его?

0 голосов
/ 24 марта 2011

Вы должны попробовать установить config.serve_static_assets = true в вашем файле config / environment / production.rb.

По умолчанию рельсы не подают статический контент в производственном режиме по соображениям производительности.Ваш веб-сервер должен быть настроен для этого.

...