Форум сайта python.su
Доброго всем времени суток! Мне необходимо сохранить содержимое формы в файл, используя CGI-скрипты на языке Python. Содержимое формы отправляется методом POST. Проблема в том, что форма благополучно обрабатывается (содержимое полей формы объединяется в одну строку и сохраняется в переменную info), но в файл не записывается (сам файл предварительно создан, пробовал просто вывести результат обработки формы на страницу - всё нормально работает). Права на файл (phonebook.dat) и каталог, в котором он хранится (/var/www/html/files/txt/), выставлены такие:
Файл phonebook.dat: хозяин файла: apache, группа: apache. Доступ: хозяин: rw- , группа: rw-, другие: rw-
Каталог /var/www/html/files/txt/: хозяин: apache, группа: apache. Доступ: хозяин: rwx, группа: rwx, другие: rwx.
Права CGI-скриптов: хозяин и группа: root, доступ: хозяин rwx, группа r-x, другие r-x.
Обработка формы (работает правильно):
surname = cgi.escape(form['surname'].value) firstname = cgi.escape(form['firstname'].value) patronymic = cgi.escape(form['patronymic'].value) address = cgi.escape(form['address'].value) phone = cgi.escape(form['phonenum'].value) info = surname + ' ' + firstname + ' ' + patronymic + ' ' + address + ' ' + phone
f = open ('/files/txt/phonebook.dat', 'a') # путь указан от корня документа (Document Root) /var/www/html/ f.writelines (info) f.close()

Отредактировано ulfur (Янв. 11, 2013 16:32:07)
Офлайн
568
Почему бы не попробовать полный путь к файлу, а не относительный?
Офлайн
FishHook, пробовал заменить путь к файлу на полный (от корня файловой системы):
f = open ('/var/www/html/files/txt/phonebook.dat', 'a')

Отредактировано ulfur (Янв. 11, 2013 18:16:12)
Офлайн
568
попробуй chmod 777, если не поможет, значит дело не в правах.
Еще попробуй “а” заменить на “а+”
Офлайн
FishHook, сделал так:
chmod 777 phonebook.dat
f = open ('/var/www/html/files/txt/phonebook.dat', 'a+')
f = open ('var/www/html/files/txt/phonebook.dat', 'a+') f.writelines (info) f.close()
print '<p>'+info+'</p>'

Отредактировано ulfur (Янв. 11, 2013 18:17:50)
Офлайн
1
Ты админ на веб сервере? Если да то попробуй войти под apache и запустить из под него свой CGI.
Офлайн
DomainLiderПока на своём учебном. Только начал изучать Python.
Ты админ на веб сервере?

Отредактировано ulfur (Янв. 11, 2013 19:20:42)
Прикреплённый файлы:
снимок78.png (34,4 KБ)
Офлайн
1
В логах апача что нибудь интересное есть? Особенно errors.log?
Офлайн
1
И еще вариант попробуй путь к файлу указать просто “phonebook.dat”. Я предполагаю что у тебя апач криво настроен.
Офлайн
DomainLider, настройки апача стоят дефолтные, их не трогал вообще. Путь к файлу убрал:
f = open ('phonebook.dat', 'a+')
127.0.0.1 - - [12/Jan/2013:16:00:32 +0700] "POST /cgi-bin/write.cgi HTTP/1.1" 200 233 "http://localhost/cgi-bin/add.cgi" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.1349.2 Safari/537.21"
127.0.0.1 - - [12/Jan/2013:16:00:35 +0700] "GET /favicon.ico HTTP/1.1" 404 284 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.1349.2 Safari/537.21"
127.0.0.1 - - [12/Jan/2013:16:00:35 +0700] "GET /favicon.ico HTTP/1.1" 404 284 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.1349.2 Safari/537.21"
127.0.0.1 - - [12/Jan/2013:16:02:16 +0700] "GET /cgi-bin/add.cgi HTTP/1.1" 200 2973 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.1349.2 Safari/537.21"
127.0.0.1 - - [12/Jan/2013:16:02:17 +0700] "GET /favicon.ico HTTP/1.1" 404 284 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.1349.2 Safari/537.21"
127.0.0.1 - - [12/Jan/2013:16:02:36 +0700] "POST /cgi-bin/write.cgi HTTP/1.1" 500 609 "http://localhost/cgi-bin/add.cgi" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.1349.2 Safari/537.21"
127.0.0.1 - - [12/Jan/2013:16:02:37 +0700] "GET /favicon.ico HTTP/1.1" 404 284 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/25.0.1349.2 Safari/537.21"
[Sat Jan 12 16:02:37 2013] [error] [client 127.0.0.1] File "/var/www/cgi-bin/write.cgi", line 41, referer: http://localhost/cgi-bin/add.cgi
[Sat Jan 12 16:02:37 2013] [error] [client 127.0.0.1] print '\t</body>', referer: http://localhost/cgi-bin/add.cgi
[Sat Jan 12 16:02:37 2013] [error] [client 127.0.0.1] ^, referer: http://localhost/cgi-bin/add.cgi
[Sat Jan 12 16:02:37 2013] [error] [client 127.0.0.1] IndentationError: expected an indented block, referer: http://localhost/cgi-bin/add.cgi
[Sat Jan 12 16:02:37 2013] [error] [client 127.0.0.1] Premature end of script headers: write.cgi, referer: http://localhost/cgi-bin/add.cgi
[Sat Jan 12 16:02:37 2013] [error] [client 127.0.0.1] File does not exist: /var/www/html/favicon.ico

Отредактировано ulfur (Янв. 12, 2013 11:14:00)
Офлайн