![]() |
Показаны 17 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Include (http://netadmin.ws/forum/showthread.php?threadid=5235)
Include
<? $success = @include_once(dirname(__FILE__)."/elem/config.inc.php");
if (!$success) { echo "Include failed"; } ?>
__________________
Международное брачное агенство в Сибири.
quote:
С $DOCUMENT_ROOT иногда проблема, пхп теряет путь, а иногда нет
__________________
http://www.phpdevs.com
Ð_усский ресурс о PHP
пути инклудов в PHP - очередная глупость, с которой приходится бороться. Первый путь - указанный, dirname(__FILE__). Второй путь - валить все в каталог типа classlib и указывать его в .htaccess:
php_value include_path ".:/my/classlib: ... "
при этом .htaccess становится серверо-зависимым, но можно не лепить дирнэймы к каждому инклуду.
document_root теряется, когда апач настроен на массовый хостинг при помощи mod_vhost_alias. Против этого (а также других случаев несовместимости) у меня есть извращенная функция document_root() на все выявленные случаи кривизны, которую я и юзаю вместо переменной. На другие переменные, типа SERVER_NAME, тоже нельзя полагаться, кстати. И на PHP_SELF (у меня был хостинг, где она указывала на сам PHP).
Tagore добавил 25-04-2003 в 07:17:05:
quote:
Первоначальное сообщение от Stek
А если с $_SERVER['DOCUMENT_ROOT'] попробовать ...
<?php
function getPath() {
// get position of current file
$path = $GLOBALS["PATH_INFO"];
// save a few nanaseconds, has this been done before,
// has the global variable been set ?
if (!isset($definedPath)) {
// is file in root already ?
if (strrpos($path,"/")!=0) {
// there is probably a quicker way to count
// the "/"s in the path
$path=explode("/",$path);
$s="";
for ($i=0;$i<count($path)-1;$i++) {
if ($path[$i]!="") {
// add the number of "../"s required
$s.="../";
}
}
// declare a global variable so you dont have to
// do this again, and return the variable
global $definedPath;
$definedPath=$s;
return $definedPath;
}
} else {
// just return what it worked out before, function
// only really runs once
return $definedPath;
}
}
include getPath() . "my_include_path/header.inc";
include getPath() . "includes/somethingelse.inc";
//above file is at mydomain.com/includes/somethingelse.inc
include getPath() . "includes/footer.inc";
?>
__________________
Международное брачное агенство в Сибири.
еще
Или же так
function DeWin($path)
{
if($path,1,1)==':')
$path=$path,2);
return '//','/','','/',$path));
}
function document_root()
{
global $HTTP_SERVER_VARS;
$s=&$HTTP_SERVER_VARS;
if(isset($s['CMDLINE'])) return false;
$full=DeWin($s['PATH_TRANSLATED']);
$i_am=DeWin($s['PHP_SELF']);
if($full,-$i_am))==$i_am)
return $s['PATH_TRANSLATED'],0,$s['PATH_TRANSLATED'])-$i_am));
return 'DOCUMENT_ROOT');
}
__________________
Международное брачное агенство в Сибири.
Честно скажу, что сам так никогда не заморачивался, если надо что-то подключить, то всегда пользовал "./" - в текущем каталоге , "../" - в каталоге выше и всё в таком духе...
Stdin
Я тоже перешел к этому. Ð_аботает, но можно желать лучшего.
__________________
Международное брачное агенство в Сибири.
Tagore
Имхо это и есть лучшее 
А вот поисковики эти включонные файлы читают или нет?
Я тоже использую ../ Почму вы(Tagore) считаете, что можно желать лучшего.
__________________
-----------------
sytnik.e-lviv.net
lover.com.ua
Dmitry
Потому что если менять структуру сайта, то много переписивать приходиться. Переменные - увы не всегда решение.
__________________
Международное брачное агенство в Сибири.
Вот сижу читаю эту тему и в следующий раз убеждаюсь насколько людям нравится усложнять себе жизнь. Вобщем то что тебя так волнует есть в книге котерова.
__________________
Всегда есть решение.
Я уже понял, что страницы, где используется функция <?php include "up.html";?> не читаются поисковиками. По моему это проблема посерьезней.
Можно как-то вставить фаил, чтобы поисковик затем его прочитал.
__________________
-----------------
sytnik.e-lviv.net
lover.com.ua
Dmitry,
Откуда такое мнение? Чем страница, сгенерированная скриптом без использования инклюдов, отличается от страницы, сгенерированной скриптом с использованием инклюдов? Да, ничем. В обоих случаях получается статичный html-код.
Я задал этот вопрос человеку из meta.ua(украинский поисковик), и
получил отрицательный ответ. Отсюда и такое мнение.
__________________
-----------------
sytnik.e-lviv.net
lover.com.ua
Поисковик никоим образом не может определить как попал текст на страницу, инклюдом, из базы или другим способом. Скорее всего человек из мета уа либо не понял твоего вопроса, либо он просто ничего не шарит.
__________________
Всегда есть решение.
Yet I found a solution:
PHP:--------------------------------------------------------------------------------
chdir(dirname(__FILE__));
__________________
Международное брачное агенство в Сибири.
не согласен с тем, что использование "..\" помогает избавиться от проблем...
А как быть в случае с вложенными скриптами? Ведь для них "..\" будет указывать на неверный путь?
У меня к примеру используется один и тот же скрипт из разных частей сайтов, соответственно пути вызывающих скриптов разные, как мне попадать в нужный каталог в этом случае? пока что я решил проблему подключением одного общего для всех модуля, в котором задается $doc_root, а дальше уже используется эта переменная. Может быть можно лучше?
была у меня такая проблема, решилась причем успешно. движок работает без предварительныз настроек не только на разных машинах но и на разных операционках. Опять же универсальность понятие относительное, мне например надо автоматически определить корень сайта (не тот каталог который общедоступен из веб, а именно корневой) в соответсвии с той структурой которая у мены есть, если менять структуру каталого то и выражение вычисляющее путь придется изменить.. так что все это индивидуально, но опираться на DOCUMENT_ROOT и прочие переменные из ENV нельзя.
__________________
FAQ OFF
| Формат времени GMT. Текущее время 23:05. | Показаны 17 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.