[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: не работает fopen с путём от корня сайта
Страницы: 1, 2
Swarex
есть файл left.php который includ`ится во все страницы сайта, в нём есть
echo $_SERVER['DOCUMENT_ROOT'];
$file = fopen ('/topic/top_number.txt', 'r');


как корень он пишет W:/domains/swarex => должен открывать файл w:/domains/swarex/topic/top_number.txt который точно существует,но он пишет:
Warning: fopen(/topic/top_number.txt) [function.fopen]: failed to open stream: No such file or directory in W:\domains\swarex\tpl\left.php on line 5
почему и как это можно исправить(путь обязательно должен быть от корня)?

_____________
Yes, I`m a noob
killer8080
$file = fopen ($_SERVER['DOCUMENT_ROOT'] . '/topic/top_number.txt', 'r');
Swarex
Цитата (killer8080 @ 4.01.2013 - 16:42)
$file = fopen ($_SERVER['DOCUMENT_ROOT'] . '/topic/top_number.txt', 'r');

спасибки,но почему не работает ссыль /topic/top_number.txt если она вроде как то же самое?

_____________
Yes, I`m a noob
killer8080
Цитата (Swarex @ 4.01.2013 - 14:48)
но почему не работает ссыль /topic/top_number.txt если она вроде как то же самое?

да где же то же самое?
/topic/top_number.txt и W:/domains/swarex/topic/top_number.txt
killer8080
Вообще для работы с путями $_SERVER['DOCUMENT_ROOT'] не самый надежный вариант, лучше в индексном файле объявить константу, указывающую на рабочий каталог, и её использовать.
Swarex
Цитата (killer8080 @ 4.01.2013 - 16:50)
Цитата (Swarex @ 4.01.2013 - 14:48)
но почему не работает ссыль /topic/top_number.txt если она вроде как то же самое?

да где же то же самое?
/topic/top_number.txt и W:/domains/swarex/topic/top_number.txt

если я не ошибаюсь - "/" ссыль в корень сайта, корень сайта - $_SERVER['DOCUMENT_ROOT'] или не так?



Цитата
лучше в индексном файле объявить константу, указывающую на рабочий каталог, и её использовать.


а как?

_____________
Yes, I`m a noob
killer8080
Цитата (Swarex @ 4.01.2013 - 15:00)
если я не ошибаюсь - "/" ссыль в корень сайта

ошибаешься, не корень сайта, а корень файловой системы.
Если так ./ то это будет текущий каталог, но ссылается он на текущую директорию запуска скрипта, а не на документ рут, об этом нужно помнить.
Swarex
Цитата (killer8080 @ 4.01.2013 - 17:03)
Цитата (Swarex @ 4.01.2013 - 15:00)
если я не ошибаюсь - "/" ссыль в корень сайта

ошибаешься, не корень сайта, а корень файловой системы.
Если так ./ то это будет текущий каталог, но ссылается он на текущую директорию запуска скрипта, а не на документ рут, об этом нужно помнить.

0_о меня обманули((

а таки как в индексном файле объявить константу, указывающую на рабочий каталог и использовать её?

_____________
Yes, I`m a noob
SoMeOnE
Цитата (Swarex @ 4.01.2013 - 14:20)
Цитата (killer8080 @ 4.01.2013 - 17:03)
Цитата (Swarex @ 4.01.2013 - 15:00)
если я не ошибаюсь - "/" ссыль в корень сайта

ошибаешься, не корень сайта, а корень файловой системы.
Если так ./ то это будет текущий каталог, но ссылается он на текущую директорию запуска скрипта, а не на документ рут, об этом нужно помнить.

0_о меня обманули((

а таки как в индексном файле объявить константу, указывающую на рабочий каталог и использовать её?

Ну как то так например.

define('BASEURL', 'рабочий каталог');

и используешь уже эту константу везде (BASEURL)
killer8080
Цитата (Swarex @ 4.01.2013 - 16:20)
а таки как  в индексном файле объявить константу, указывающую на рабочий каталог и  использовать её?

для PHP<5.3
define('DOC_ROOT', dirname(__FILE__));


для PHP>=5.3
define('DOC_ROOT', __DIR__);
killer8080
Цитата (SoMeOnE @ 4.01.2013 - 16:52)
и используешь уже эту константу везде (BASEURL)

не советую выбирать такое имя для константы, т.к. имя должно отражать суть. Файловый путь и УРЛ это совершенно разные вещи.
Swarex
а использовать её как?

_____________
Yes, I`m a noob
killer8080
Цитата (Swarex @ 4.01.2013 - 17:41)
а использовать её как?

так и использовать, подставлять везде как часть пути.
$file = fopen (DOC_ROOT . '/topic/top_number.txt', 'r');
Swarex
угу. а для объявления просто написать define('DOC_ROOT', __DIR__); в index.php в корне сайта?

_____________
Yes, I`m a noob
killer8080
Цитата (Swarex @ 4.01.2013 - 18:15)
угу. а для объявления просто написать define('DOC_ROOT', __DIR__); в index.php в корне сайта?

Да, при условии что index.php единая точка входа.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.