Эта тема на forum.dklab.ru


Ник: Проблема с $DOCUMENT_ROOT и file().
Печатаю:
<?php
@$file=fopen("$DOCUMENT_ROOT/user/index.php","r+") or (die ("Невозможно открыть файл") and exit);
$file_arr=file("$file");
?>
Ответ: "Warning: file(Resource id #2): failed to open stream: No such file or directory in "
Файл на удаленном сервере присутствует.
Печатаю:
<?php
@$file=fopen("$DOCUMENT_ROOT/user/index.php","r+") or (die ("Невозможно открыть файл") and exit);
$file_arr=file("$DOCUMENT_ROOT/user/index.php");
?>
Ответ: не проблем!

В чем причина?
Евгений Галашин:
В чем причина?
В неумении/нежелании читать документацию.
http://ru2.php.net/fopen
http://ru2.php.net/file
Ник:
Спасибо.
Ух. Теперь надо учить английский. :)
Ник:
Нет, не понял.
Если идентификатор файла возвращаемый при открытии работает, то почему потом возникают с ним проблемы.
Он, как я понимаю, остается одним и тем же?
И что еще интереснее проблема также не возникает при указании через http://site.ru/user/index.php.
Юрий Насретдинов:
Ник
А вы fopen замените на print, и сразу все поймете...
Ник:
Z:\home\site.ru\www\user\index.php
Опять не понял. $file, полученный от fopen() нельзя использовать в file()?
$file=fopen("$DOCUMENT_ROOT/user/index.php","r+")
$file_arr=file("$file")
То есть такая запись корреным образом неверна?
Я прошу прошения за свое незнание, но врядли это знание можно получить на плохих/неработающих примерах кода. Я прав? Т.е. в книге допущена ошибка?

(Пример взят из книги Л.Томсона и Л.Веллинга (Diasoft) (PHP+MySQL) стр.69 последний абзац).
Еще раз извините. Спасибо.
Юрий Насретдинов:

$file=fopen("$DOCUMENT_ROOT/user/index.php","r+")
$file_arr=file("$file")


1) где точки с запятой?
2) почему идентификатор внутри строки? надо просто file($file);
3) аргуметом функции file является название файла, а не идентификатор fopen
4) $DOCUMENT_ROOT не работает при register_globals off (по умолчанию именно он, хотя большинство хостеров ставят обратно on)
5) купите себе нормальную книжку (например «PHP5» Дмитрия Котерова)
Ник:
1) где точки с запятой? - были;
2) почему идентификатор внутри строки? надо просто file($file) - пробовал;
3) аргуметом функции file является название файла, а не идентификатор fopen - выходит запись file($file) неверна?
4) $DOCUMENT_ROOT не работает при register_globals off (по умолчанию именно он, хотя большинство хостеров ставят обратно on) - если выводится (Z:\home\site.ru\www\user\index.php ), то как я полагаю on?
5) купите себе нормальную книжку (например «PHP5» Дмитрия Котерова) - в планах, вышла не так давно.
Дмитрий Котеров:
Уберите собаку (@), она ошибки глушит.

И конструкция
or (die ("Невозможно открыть файл") and exit);
- это что-то интересное. ;-) Явно кто-то пытался говорить с PHP по-английски. Что из этого вышло, Вы и наблюдаете.
Юрий Насретдинов:
выходит запись file($file) неверна
если $file - это результат работы fopen

если выводится (Z:\home\site.ru\www\user\index.php ), то как я полагаю on
в Денвере по умолчанию on

в планах, вышла не так давно
Её уже можно купить. Советую это сделать как можно скорее
Ник:
2) почему идентификатор внутри строки? надо просто file($file) - пробовал -> Warning: file() expects parameter 1 to be string, resource given in
Юрий Насретдинов:
expects parameter 1 to be string, resource given
http://php.net/file

В общем, учитесь юзать мануал и свою голову. Также полезным сайтом является translate.ru
Юрий Насретдинов:
Тема закрыта.

Эта тема на forum.dklab.ru