Разрешение файла - доступ запрещен - PullRequest
1 голос
/ 10 февраля 2011

Я делаю приложение в php, и мне нужно проверить права доступа к файлам в определенных каталогах (скажем, в папке «abc»), и мне нужно динамически создать новый файл, скажем, «file» в каталоге «xyz» .. Iхочу, чтобы "abc" был доступен для чтения и записи веб-сервером (т.е. 666), и чтобы иметь возможность создавать файл в каталоге "xyz", я проверяю его и в режиме чтения и записи (т.е. 666) ... И вот что этопечатает каталог xyz - каталог 777 abc - 777

Но когда я пытаюсь

$data = 'Some file data';
                        $fh = fopen($rootdir."\\file.php","r+");
                        if ( !fwrite($fh,$data))
                        {
                        //echo $rootdir;
                        echo 'Unable to write the file';
                        }
                        else
                        {
                        echo 'File written!';
                        }
                        fclose($fh);

$ rootdir содержать адрес папки "xyz" ... Он показывает следующую ошибку

Сообщение: fopen (C: \ inetpub \ wwwroot \ file.php) [function.fopen]: не удалось открыть поток: отказано в разрешении

Как я уже сказал C: \ inetpub \ wwwroot - права доступа к файлу 777 ..И изначально file.php не существует, но fopen создаст его .. не так ли?И если это не так, как я могу создать файл динамически?

Любая помощь?

Ответы [ 2 ]

1 голос
/ 10 февраля 2011
$fh = fopen($rootdir."\\file.php","r+");;

не создаст файл, если он не существует.Для создания файла вам необходимо использовать

$fh = fopen($rootdir."\\file.php","w");

или

$fh = fopen($rootdir."\\file.php","w+");

. Обращаться к этому это

0 голосов
/ 10 февраля 2011

Windows / NTFS использует ACL для доступа к файлам.

В закладке «Безопасность» диалогового окна свойств файла необходимо предоставить пользователю «Гостевая учетная запись Интернета ([что-то] / IUSR_ [что-то])» доступ на запись или полное разрешение. Вы сделали это?

  • Щелкните правой кнопкой мыши файл
  • Нажмите «Свойства»
  • Перейдите на вкладку «Безопасность»
  • Найти пользователя: «Гостевая учетная запись Интернета»
  • Установите необходимые разрешения

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...