Форум сетевых администраторов Страницы (2): [1] 2 »
Показаны 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)


Помещено Tagore 24-04-2003 в 18:02:

Talking Include


PHP:


<? $success = @include_once(dirname(__FILE__)."/elem/config.inc.php"); 
if (!
$success) { echo "Include failed"; } ?>



Ð_то хороший прием, что бы включать файл на оюбом уровне сата или есть по-лечше? С $DOCUMENT_ROOT иногда проблема, пхп теряет путь, а иногда нет. Мне надо, что бы это на всех серваках при любой конфигурации работало.

__________________
Международное брачное агенство в Сибири.


Помещено Stek 24-04-2003 в 22:10:

quote:
С $DOCUMENT_ROOT иногда проблема, пхп теряет путь, а иногда нет

А если с $_SERVER['DOCUMENT_ROOT'] попробовать ...

__________________
http://www.phpdevs.com
Ð_усский ресурс о PHP


Помещено Tagore 25-04-2003 в 07:09:

пути инклудов в 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:
<?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";

?>

__________________
Международное брачное агенство в Сибири.


Помещено Tagore 26-04-2003 в 16:23:

еще

Или же так


PHP:


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 26-04-2003 в 23:29:

Честно скажу, что сам так никогда не заморачивался, если надо что-то подключить, то всегда пользовал "./" - в текущем каталоге , "../" - в каталоге выше и всё в таком духе...


Помещено Tagore 27-04-2003 в 08:45:

Stdin
Я тоже перешел к этому. Ð_аботает, но можно желать лучшего.

__________________
Международное брачное агенство в Сибири.


Помещено Stdin 27-04-2003 в 15:42:

Tagore
Имхо это и есть лучшее


Помещено Dmitry 29-04-2003 в 05:45:

А вот поисковики эти включонные файлы читают или нет?
Я тоже использую ../ Почму вы(Tagore) считаете, что можно желать лучшего.

__________________
-----------------
sytnik.e-lviv.net
lover.com.ua


Помещено Tagore 29-04-2003 в 09:43:

Dmitry
Потому что если менять структуру сайта, то много переписивать приходиться. Переменные - увы не всегда решение.

__________________
Международное брачное агенство в Сибири.


Помещено polo 29-04-2003 в 22:13:

Вот сижу читаю эту тему и в следующий раз убеждаюсь насколько людям нравится усложнять себе жизнь. Вобщем то что тебя так волнует есть в книге котерова.

__________________
Всегда есть решение.


Помещено Dmitry 30-04-2003 в 07:53:

Я уже понял, что страницы, где используется функция <?php include "up.html";?> не читаются поисковиками. По моему это проблема посерьезней.
Можно как-то вставить фаил, чтобы поисковик затем его прочитал.

__________________
-----------------
sytnik.e-lviv.net
lover.com.ua


Помещено Nevermind 30-04-2003 в 09:11:

Dmitry,
Откуда такое мнение? Чем страница, сгенерированная скриптом без использования инклюдов, отличается от страницы, сгенерированной скриптом с использованием инклюдов? Да, ничем. В обоих случаях получается статичный html-код.


Помещено Dmitry 30-04-2003 в 10:26:

Я задал этот вопрос человеку из meta.ua(украинский поисковик), и
получил отрицательный ответ. Отсюда и такое мнение.

__________________
-----------------
sytnik.e-lviv.net
lover.com.ua


Помещено polo 01-05-2003 в 14:11:

Поисковик никоим образом не может определить как попал текст на страницу, инклюдом, из базы или другим способом. Скорее всего человек из мета уа либо не понял твоего вопроса, либо он просто ничего не шарит.

__________________
Всегда есть решение.


Помещено Tagore 02-05-2003 в 07:49:

Yet I found a solution:



PHP:--------------------------------------------------------------------------------


PHP:


chdir
(dirname(__FILE__));


--------------------------------------------------------------------------------


This makes the job, so you can include files from the same folder, not from the Including file.

__________________
Международное брачное агенство в Сибири.


Формат времени GMT. Текущее время 21:18. Страницы (2): [1] 2 »
Показаны 17 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.