Как мне включить файл более 2 каталогов обратно? - PullRequest
82 голосов
/ 02 октября 2008

Как включить файл, который находится более чем в 2 каталогах. Я знаю, что вы можете использовать ../index.php для включения файла с двумя каталогами назад, но как вы сделаете это для 3 каталогов назад? Имеет ли это смысл? Я пытался .../index.php, но он не работает.

У меня есть файл в /game/forum/files/index.php, и он использует PHP include для включения файла. Который находится в /includes/boot.inc.php; / является корневым каталогом.

Ответы [ 19 ]

5 голосов
/ 02 октября 2008

Но будьте ОЧЕНЬ , чтобы пользователь мог выбрать файл. Вы не хотите, чтобы они получили файл с именем, например,

../../../../../../../../../../etc/passwd

или другие конфиденциальные системные файлы.

(Извините, прошло много времени с тех пор, как я был системным администратором Linux, и я думаю это секретный файл, насколько я помню)

5 голосов
/ 02 октября 2008
../../../includes/boot.inc.php
4 голосов
/ 11 мая 2017

Я рекомендую использовать __DIR__ для указания текущей директории php файла . Проверьте здесь по причине.

__DIR__ . /../../index.php
3 голосов
/ 06 декабря 2016

если вы используете php7, вы можете использовать функцию dirname с параметром уровня 2, например:

dirname("/usr/local/lib", 2);

второй параметр "2" показывает, на какой уровень вверх

dirname reference

2 голосов
/ 11 апреля 2014

включая каталоги могут обрабатываться прокси-файлом

  • корень
  • ..... | __web
  • ..... | ......... | _requiredDbSettings.php
  • ..... |
  • ..... | ___ дб
  • ..... | ......... | _dbsettings.php
  • ..... |
  • ..... | _proxy.php

    dbsettings.php:
    $host='localhost';
    $user='username':
    $pass='pass';
    
    proxy.php:
    include_once 'db/dbsettings.php
    
    requiredDbSettings.php:
    include_once './../proxy.php';
    
2 голосов
/ 15 сентября 2012

Попробуйте ../../. Вы можете изменить его соответствующим образом, так как он вернет вас назад на две директории. Сначала дойдите до корневого каталога, затем получите доступ к нужному каталогу.

например. Вы находитесь в root/inc/usr/ap, и есть другой каталог root/2nd/path. Вы можете получить доступ к каталогу path из ap следующим образом: ../../2nd/path сначала зайдите в root, а не в нужный каталог. Если не работает, пожалуйста, поделитесь.

2 голосов
/ 02 октября 2008

, если вы включаете / в начале включения, включение будет приниматься как путь от корня сайта.

если ваш сайт http://www.example.com/game/forum/files/index.php, вы можете добавить в /include/boot.inc.php включение, которое будет разрешено до http://www.example.com/includes/boot.inc.php.

Вы должны быть осторожны с .. обходом, так как некоторые веб-серверы отключили его; это также вызывает проблемы, когда вы хотите переместить свой сайт на новый компьютер / хост, а структура немного отличается.

1 голос
/ 06 сентября 2012

Я видел ваши ответы и использовал include path с синтаксисом

require_once '../file.php'; // server internal error 500

и http-сервер (Apache 2.4.3) вернул внутреннюю ошибку 500.

Когда я изменил путь к

require_once '/../file.php'; // OK

все хорошо.

0 голосов
/ 03 апреля 2019

Попробуйте

этот пример - один каталог назад

require_once('../images/yourimg.png');

этот пример - два каталога назад

require_once('../../images/yourimg.png');
...