PHP - Как я могу отобразить изображение, поступающее из другого каталога, без использования абсолютного пути?

Я просто хочу спросить, как я могу отобразить изображение из другого каталога без использования абсолютного пути (потому что это не работает). Возьмем этот пример:

Предположим, что у меня есть папка htdocs и внутри нее есть папка с именем system, папка system содержит 2 папки и 1 файл navigations.php внутри. Первая папка называется images, и это хранилище изображений, которые будут использоваться в программе, а вторая папка называется files и содержит 2 разные папки, phpfiles и cssfiles, поэтому внутри папки phpfiles у меня есть PHP файл с именем loans.php, который будет включать navigations.php (у меня нет проблем с включением файла) в navigations.php. У меня есть код, в котором он извлекает некоторые изображения из папки images, но когда я включил его в loans.php, изображения в navigations.php не загрузился. Я знаю, что есть проблемы с каталогами, потому что файл loans.php находится в подкаталогах папки system. Я пытался использовать абсолютный путь (C:/xampp/htdocs/system/images/image.png), но он не работает, поэтому в качестве альтернативы я использовал тег <base>, чтобы использовать его в относительном пути, но он все равно не отображается в loans.php, потому что он находится в подкаталогах папки system. Как лучше всего это исправить?

PS: Не обращайте внимания на пример, просто сосредоточьтесь на ситуации :)

-ДОПОЛНЕНИЕ (Проблема решена)

В качестве решения я создал функцию PHP, которая печатает строку в зависимости от количества шагов назад в каталоге для доступа к каталогам из разных подкаталогов.

function numberOfBack($num){
    $strback = "";
    if ($num == 0){
        return $strback;
    } else {
        for ($x = 1; $x <= $num; $x++){
            $strback.="../";
        }
        return $strback;
    }
}

Чтобы использовать это, возвращаемая строка будет объединена с src изображения или файла PHP, который я собираюсь получить. Спасибо за подсказки и ответы.


person Niel Sinel    schedule 07.07.2015    source источник
comment
Как вы видите это в своем браузере? НРАВИТСЯ localhost/system/ ?   -  person Spade    schedule 07.07.2015
comment
Да, вот почему в моем <base> мой href /system/   -  person Niel Sinel    schedule 07.07.2015
comment
Это, вероятно, было бы легче понять, если бы вы показали структуру папок в виде снимка экрана или изображения ASCII в своем сообщении, вместо того, чтобы распределять информацию по нескольким строкам прозы.   -  person CBroe    schedule 07.07.2015


Ответы (2)


Если вы получаете доступ только к navigations.php через loans.php, решение состоит в том, чтобы получить доступ к относительному пути изображения с точки зрения loans.php.

В этом случае, судя по вашему описанию, относительный путь будет таким: ../images/image.png.

person TurdPile    schedule 07.07.2015
comment
Насколько я понимаю, все коды внутри navigations.php будут объединены в loans.php, как только я включу его в loans.php, поэтому в качестве решения я использовал тег base, чтобы просто использовать относительные пути в своих кодах. Но проблема в navigations.php, мой базовый тег такой, <base= "\system\">, поэтому я могу получить его в navigations.php через <img src= "images\image.png">, но в кредитах.php (другой файл из другого каталога) он не работает, так как мне нужно вернуться на два каталога назад, чтобы использовать тег «‹base›» navigations.php - person Niel Sinel; 07.07.2015
comment
/system/ - это относительный путь, поэтому он будет предполагать /files/system/, что не является вашим намерением. <base>, по моему опыту, в любом случае лучше всего использовать абсолютный путь. Однако попробуйте заменить текущую базу на <base href="../images/"> и посмотрите, поможет ли это. - person TurdPile; 07.07.2015
comment
Хорошо, исходя из моего понимания (в котором я не уверен, неправильно это или нет) тег <base> используется, чтобы просто игнорировать абсолютный путь адреса в кодировке и просто использовать относительный путь в кодировке, также я думал, что он обычно используется на имена веб-сайтов, адрес веб-сайта, начальное имя сайта (пример: www.example.com/), чтобы легко получить все файлы внутри www.example.com, по вашему объяснению, ../images вернется на один каталог, - person Niel Sinel; 07.07.2015
comment
таким образом, путь в базовом теге будет системой/изображениями, что правильно, НО как, если кредиты.php находится внутри папок папки внутри системы, в которой мне нужно сначала вернуться на 2 каталога, прежде чем я смогу использовать <base>? - person Niel Sinel; 07.07.2015
comment
Хм, все варианты использования, которые я видел, используют полный путь. пожать плечами - в любом случае... Поправьте меня, если я ошибаюсь, но макет выглядит как /system/files/loans.php, который пытается получить доступ к /system/images/image.png. Опять же, base изначально не предполагает, что это абсолютный путь, поскольку он принимает оба. Поэтому, как я уже говорил, /system/ предполагается как ./system/. Вы пытались изменить его на ../../system или просто ../system (в зависимости от того, что это может быть)? - person TurdPile; 07.07.2015

Основываясь на вашем комментарии, отвечающем на мой, ваш абсолютный путь должен быть следующим:

http://localhost/system/images/image.png

Я не эксперт xampp, но я считаю, что он настроен так, чтобы apache отображал этот адрес вместо фактического пути к папке, например c:/htdocs/system/

person Spade    schedule 07.07.2015
comment
Да, на самом деле он не работает с фактическим путем к папке, localhost по умолчанию используется в адресе, поэтому запускается <base> на "/system/" - person Niel Sinel; 07.07.2015