Подтвердить что ты не робот

PHP требует, чтобы файл из верхнего каталога

У меня есть несколько поддоменов, содержащихся в их собственном каталоге выше моего корневого сайта и папка с ресурсами в моем корневом каталоге. Например:

/
/assets/
/forums/
/blog/

Я пытаюсь потребовать() файлы на php-страницах как в корневом каталоге, так и в подкаталогах, например, assets/include/form.php требуется() как в index.php в корневом каталоге, так и в индексе .php в каталоге форумов. Однако внутри form.php требуется другое, пытаясь получить еще один файл, содержащийся в каталоге include.

Я не могу найти способ потребовать файл внутри этого form.php, где он будет работать как в корневом каталоге index.php, так и в справочном каталоге index.php.

Можно ли явно указать файл, начинающийся с корневого каталога?

4b9b3361

Ответ 1

Существует несколько способов достижения этой цели.

Использовать относительный путь от form.php

require_once __DIR__ . '/otherfile.php';

Если вы используете PHP 5.2 или старше, вы можете использовать dirname(__FILE__) вместо __DIR__. Подробнее о магических константах здесь.

Используйте переменную $_SERVER['DOCUMENT_ROOT']

Это абсолютный путь к вашему корню документа: /var/www/example.org/ или C:\wamp\www\ в Windows.

Корень документа - это папка, в которой находятся файлы вашего корневого уровня: http://example.org/index.php находится в $_SERVER['DOCUMENT_ROOT'] . '/index.php'

Использование: require_once $_SERVER['DOCUMENT_ROOT'] . '/include/otherfile.php';

Использовать автозагрузчик

Это, вероятно, будет немного переборщиком для вашего приложения, если оно очень просто.

Настройка PHP включает пути

Вы также можете установить каталоги, в которых PHP будет искать файлы при использовании require() или include(). Ознакомьтесь с set_include_path() здесь.

Использование: require_once 'otherfile.php';


Примечание:

Я вижу, что некоторые ответы предлагают использовать URL-адрес внутри require(). Я бы не предложил это, так как файл PHP будет разбираться до его включения. Это нормально для HTML файлов или PHP-скриптов, которые выводят HTML, но если у вас есть только определение класса, вы получите пустой результат.

Ответ 2

У вас есть 2 решения. Вы можете либо использовать полный URL-адрес файла, например, если ваш файл находится в каталоге "lib", который вы можете использовать: require_once ('http://www.mysite.com/lib/myfile.php')

или

Вы можете попробовать функцию $_SERVER ['DOCUMENT_ROOT'] в PHP, но это не всегда доказательство дурака.

Ответ 3

  • Предположим, у вас есть pgm1.php в www.domain.com/dir1/dir2/dir3/pgm1.php, которые включают или требуют 'Дира/вкл/Xpto.php.
  • и еще один pgm2.php в www.domain.com/dirZ1/dirZ2/pgm2.php, которые включают или требуют такой же "dirA/inc/Xpto.php".
  • и ваша конфигурация хоста не разрешает require/include 'http://www.domain.com/......'
  • Итак... вы можете использовать это, как в pgm1.php, так и pgm1.php, и REQUIRE или
    ВКЛЮЧИТЕ работы!

    function rURI($p){
       for($w='',$i=1;$i<(count(explode('/',$_SERVER['PHP_SELF']))-1);$i++,$w.='../');return
       $w.$p; }
    

    требуется rURI ('dirA/inc/Xpto.php');//путь от root

Ответ 4

Если один уровень выше, используйте:

include('../header.php');

если два уровня выше:

include('../../header.php');

Подробнее, посетите: http://forums.htmlhelp.com/index.php?showtopic=2922

Ответ 5

почему бы вам не использовать (../)

require('../folder/file.php');