Пишу cgi-программу на Си.
Открываю файл, который лежит на сервере:
FILE *pFile = fopen(USER_BASE, "rb");
считываю оттуда данные – все работает..
потом когда нужно добавить в файл новую информацию:
fclose(pFile);
pFile = fopen(USER_BASE, "wb");
if (pFile == 0)
{
<actions>
goto m;
}
<запись>
m:
когда проверяю проограмму без участия IIS в отладчике VStudio, имитирую запрос.. все работает, и считываюится данные, и записываются в файл. Если же запускаю программу с использование cgi, чтение из файла работает, а запись нет, т.е. выполняется команды <actions> это знач что файл не открывается.. что это может быть?
19 октября 2008 в 23:03
спасибо, получилось
через проводник создал нового пользователя и уже в веб-странице указал путь на него.. в файл пишет
19 октября 2008 в 23:01
В проводнике.
19 октября 2008 в 22:03
так и не понял, где нужно менять эти настройки доступа.. в IIS менеджере? если да то как? пробовалвыбирать пользователя в разделе анонимный доступ и проверка подлинности, ничего не сработало..
19 октября 2008 в 19:05
#5 Как обычно, правая кнопка на нужной папке/файле, там "properties/свойства", далее выбираем вкладку "security/безопасность", там добавляем пользователя NETWORK_SYSTEM (если его еще нет) и устанавливаем ему побольше прав. Если дело в правах, то все должно будет заработать.
ЗЫ в примере действительно без goto можно легко обойтись с помощью else.
19 октября 2008 в 16:01
Павел Потапов, можно по-доступней объяснить как разрешить запись в файл?
#2 goto – это отличная вещь, в итоге все преобразуется в asm, а там jmp везде и всюду… надо только логично испольовать его
19 октября 2008 в 14:00
#3 согласен
19 октября 2008 в 12:00
goto – зло. Об этом ещё Дейкстра говорил
19 октября 2008 в 0:05
Скорее всего это значит, что на этот файл нет прав у того пользователя, ис-под которого запускается процесс, в котором выполняется этот код. Если не ошибаюсь, то по умолчанию приложения под IIS работают под аккаунтом NETWORK_SYSTEM. В принципе, можно выдать права этому аккаунту на нужный файл. Или в настройках можно задать аккаунт с правами на запись в этот файл. Последний способ лучше, имхо, т.к. запись в этот файл будет доступна только этому приложению.