![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| web_VIP |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 8.9.2007 Репутация: нет Всего: нет |
Для начала вот мои скрипт:
файл - check_db.php
файл - db.txt
Два этих файла находяться в: - http://localhost/libraries/db.txt - http://localhost/libraries/check_db.php файл - index.php пусть его: http://localhost/index.php
В результате выводиться ошибка что он не может найти "db.txt" в этой директорий, суть ошибки я понял, это нужно изменить в $file="db.txt"; => то есть указать путь => $file="libraries/db.txt"; Но вопрос в другом, если изменить, то файл будет виден только для этой директорий, а если я захочу его подлючить в других директориях (http://localhost/main/, http://localhost/lib/ и т.д.) Может подскажите что можно сделать в этом случае, может как то установить директорию или что то еще, я просто запутался. |
||||||
|
|||||||
| Vaulter |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1724 Регистрация: 30.12.2002 Где: бункер Репутация: 6 Всего: 22 |
попробуй так |
|||
|
||||
| web_VIP |
|
||||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 8.9.2007 Репутация: нет Всего: нет |
А что это значит? можешь пояснить Добавлено через 4 минуты и 49 секунд
Пробую изменить $file="1.txt" => $file=dirname(__FILE__)."1.txt" Ошибка!!! |
||||||||
|
|||||||||
| drpain |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 27.9.2007 Репутация: нет Всего: нет |
я бы попробывал так
или если точно знаешь что надо на уровень выше
|
||||
|
|||||
| web_VIP |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 8.9.2007 Репутация: нет Всего: нет |
Все работает!!! Спосибо!!!
Это сообщение отредактировал(а) web_VIP - 8.2.2008, 16:45 |
|||
|
||||
| web_VIP |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 8.9.2007 Репутация: нет Всего: нет |
Вариант:
Тоже работает!!! Это сообщение отредактировал(а) web_VIP - 8.2.2008, 16:57 |
|||
|
||||
| Golda |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 20 Всего: 42 |
Смысл предложений Vaulter и drpain в том, чтобы составить абсолютный путь к файлу. dirname() вернет путь в файловой системе к директории, в которой расположен Ваш скрипт. Должен заработать, если добавить слеш.
В принципе любой из предложеных вариантов должен заработать, но есть ньюансы. Вараианты $file=dirname(__FILE__)."./db.txt"; и $file = getcwd()."/../libraries/db.txt"; опираются на знание относительного положения файла относительно скрипта. Если Вам придется не подключать файл с определением пути файла, а определять в другом скрипте, из другой директории, путь придтся формировать по-другому. Вариант $file = $_SERVER["DOCUMENT_ROOT"]."/libraris/db.txt"; в этом смысле более общий. Так можно определить путь к файлу, не заботясь о распоположении скрипта. Но он опирается на предположение, что Ваш проект обязательно расположен в корне сайта. Если переместить проект как целое в поддиректорию, работать перестанет. С getcwd() связан еще один ньюанс. Если dirname() возвращает директорию, в которой расположен данный скрипт, то getcwd() возвращает текущую рабочую директорию. И тут надо быть осторожным. Если Ваш скрипт подключается другим, из другой директории, Вас ждет сюрприз. getcwd() вернет директорию, в который расположен скрипт, вызванный пользователем, а не подключенный. А если вызов происходит из командной строки, текущая директория - это вообще директория, в которой находится пользователь, когда этот скрипт вызывает. Текущая директория - очень непредсказуемая штука. Я бы не использовала этот вариант -------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
||||
|
|||||
| web_VIP |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 8.9.2007 Репутация: нет Всего: нет |
Golda Ну и что же лучше выбрать?
|
|||
|
||||
| Golda |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 20 Всего: 42 |
Вам лучше знать особенности своего проекта. Я объяснила ньюансы, а дальше решайте. В текущей постановке задаче. Если точно известно, проект не будет перемещаться в поддиректорию и скрипт всегда будет вызываться через веб-сервер, а не из командной строки, я бы выбрала вариант с $_SERVER["DOCUMENT_ROOT"]. Заодно не тратится время на вызов дополнительных функций
-------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
|||
|
||||
| web_VIP |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 68 Регистрация: 8.9.2007 Репутация: нет Всего: нет |
Golda А мне если чесно понравилась вот эта идея - $file=dirname(__FILE__)."./db.txt"; так как при смене директорий скрипт все равно будет работать, ну других пока минусом не нашел в нем. а $_SERVER["DOCUMENT_ROOT"] показывает путь до корневой директорий сайта как я понял.
|
|||
|
||||
| Staind |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 175 Регистрация: 17.12.2007 Где: Планета сокровищ Репутация: 2 Всего: 3 |
Да. Верно. P.s. Удобная переменная, имхо. --------------------
Ничто так не раздражает человека, как просьба успокоиться |
|||
|
||||
| Golda |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 26.3.2007 Где: Ариель, Израиль Репутация: 20 Всего: 42 |
Вполне нормальный вариант. Только, sorry, заметила у себя описку. Точка лишняя. Я имела в виду
-------------------- "For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics |
||||
|
|||||
| flashaa |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 796 Регистрация: 7.3.2006 Репутация: 19 Всего: 25 |
Не очень хорошие решения. Первое соответственно работает только если скрипт лежит "в корне сайта", что нехорошо, т.к. я переложу во вложенную папку или перемещусь на другой хостинг и все перестанет работать. getcwd() - решение тоже не надежное, т.к. этот параметр может повести себя непредсказуемо. В php-apache он равен директории запрошенного скрипта. А если мы захотим запросить не этот скрипт а другой, а данный захотим подключить через require или include все сломается. В php-cli скрипт вообще не меняет рабочую директорию. В php-cgi по-моему тоже не меняет (но не утверждаю, т.к. не уверен). Так что самый хороший вариант dirname(__FILE__) |
||||||
|
|||||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |