singlepost

Запись в файл cgi << На главную или назад  

Пишу 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> это знач что файл не открывается.. что это может быть?

9 ответов в теме “Запись в файл cgi”

  1. 8
    Алексей Поляков ответил:

    спасибо, получилось
    через проводник создал нового пользователя и уже в веб-странице указал путь на него.. в файл пишет

  2. 7
    Павел Потапов ответил:

    В проводнике.

  3. 6
    Алексей Поляков ответил:

    так и не понял, где нужно менять эти настройки доступа.. в IIS менеджере? если да то как? пробовалвыбирать пользователя в разделе анонимный доступ и проверка подлинности, ничего не сработало..

  4. 5
    Павел Потапов ответил:

    #5 Как обычно, правая кнопка на нужной папке/файле, там "properties/свойства", далее выбираем вкладку "security/безопасность", там добавляем пользователя NETWORK_SYSTEM (если его еще нет) и устанавливаем ему побольше прав. Если дело в правах, то все должно будет заработать.

    ЗЫ в примере действительно без goto можно легко обойтись с помощью else.

  5. 4
    Алексей Поляков ответил:

    Павел Потапов, можно по-доступней объяснить как разрешить запись в файл?
    #2 goto – это отличная вещь, в итоге все преобразуется в asm, а там jmp везде и всюду… надо только логично испольовать его

  6. 3
    Антон Кононов ответил:

    #3 согласен

  7. 2
    Дмитрий Матвеев ответил:

    goto – зло. Об этом ещё Дейкстра говорил

  8. 1
    Павел Потапов ответил:

    Скорее всего это значит, что на этот файл нет прав у того пользователя, ис-под которого запускается процесс, в котором выполняется этот код. Если не ошибаюсь, то по умолчанию приложения под IIS работают под аккаунтом NETWORK_SYSTEM. В принципе, можно выдать права этому аккаунту на нужный файл. Или в настройках можно задать аккаунт с правами на запись в этот файл. Последний способ лучше, имхо, т.к. запись в этот файл будет доступна только этому приложению.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.