php не будет включать существующий файл: разрешение запрещено - PullRequest
0 голосов
/ 03 декабря 2009

Вы будете смеяться, если прочтете до конца этого :) Теперь это сводит меня с ума - я не могу заставить php включить существующий файл с соответствующими правами доступа и т. Д.

У меня есть файл test.php и файл "lib / tools.php".

Я запускаю следующий код:

$fn = 'C:\Sasha\ThreeDiamonds\www\lib\tools.php';
if(file_exists($fn)){
    echo "Trying to INCLUDE THE BLoody file: $fn";
if(require_once($fn)==false) echo("failed to include: ".$fn);
}

и получите следующее:

Попытка ВКЛЮЧИТЬ файл BLoody: C: \ Саша \ ThreeDiamonds \ WWW \ Lib \ tools.php Предупреждение: require_once (C: \ Саша \ ThreeDiamonds \ WWW): не удалось открыть поток: разрешение отказано в C: \ Sasha \ ThreeDiamonds \ www \ test.php на строка 5 Фатальная ошибка: require_once (): Не удалось открыть '' (include_path = '.; C: \ php5 \ pear') в C: \ Sasha \ ThreeDiamonds \ www \ test.php на строка 5

Теперь это Windows / IIS и последняя версия php.

Следующее работает нормально, если я вызываю другой php-файл из той же директории tools.php со следующим кодом:

require('tools.php');
$mytools = new tools();
$mytools->ShowGallery();

Это сводит меня с ума :) IIS настроен на аутентификацию с идентификатором пула приложений - я вижу, что php-cgi.exe запущен под учетной записью локальной службы, и я убедился, что эффективные разрешения tools.php позволяют полный доступ этот аккаунт.

Я включил аудит безопасности для этого файла tools.php для неудачных попыток, и он не показывает никаких проблем.

Хорошо, я установил ProcMon, чтобы посмотреть, что здесь происходит. Все, что я получаю, это «FAST IO DISALLOWED» для операции «Query Open». Ммммм? Windows7 да.

Я потерялся, помогите пожалуйста:)

Ответы [ 2 ]

0 голосов
/ 03 декабря 2009

Глядя на точный путь, который выдает предупреждение, он все еще выглядит как проблема с правами доступа к каталогу www или указанному ниже (ThreeDiamonds)

Может быть, C:\Sasha\ThreeDiamonds имеет проблемы с правами доступа, а каталоги ниже - нет? Это объясняет, почему он работает с относительным путем.

0 голосов
/ 03 декабря 2009

Неважно - получил это отсортировано.

На самом деле проблема не имела ничего общего с разрешениями: в конструкторе класса инструментов была ошибка, и это было причиной этого. Почему php выдает эту ошибку разрешения - это другой вопрос:)

Спасибо всем!

...