У меня структура папок следующая:
mydomain.com
->Folder-A
->Folder-B
У меня есть строка из базы данных "../Folder-B/image1.jpg", которая указывает на изображение в папке-B.
Внутри скрипта в папке A я использую имя каталога ( FILE ) для получения имени файла и получаю
mydomain.com/Folder-A
. Внутри этого скрипта мне нужно получить строку с надписью 'mydomain.com/Folder-B/image1.jpg
. Я старался
$path=dirname(__FILE__).'/'.'../Folder-B/image1.jpg';
Это отображается как mydomain.com%2FFolder-A%2F..%2FFolder-B%2Fimage1.jpg
Это кнопка общего доступа в facebook, и при этом не удается получить правильное изображение. Кто-нибудь знает, как правильно получить путь?
Изменить: я надеюсь получить URL-адрес >>> mydomain.com% 2FFolder-B% 2Fimage1.jpg
Ответы:
Для PHP <5.3 используйте:
$upOne = realpath(dirname(__FILE__) . '/..');
В PHP с 5.3 по 5.6 используйте:
$upOne = realpath(__DIR__ . '/..');
В PHP> = 7.0 используйте:
$upOne = dirname(__DIR__, 1);
источник
realpath()
из вашего сообщения. Моя последняя проблема с выходом решена отлично, спасибо!dirname(__DIR__)
Если у вас установлен php 7.0+, вы можете использовать уровни.
dirname( __FILE__, 2 )
со вторым параметром вы можете определить количество уровней, на которые вы хотите вернуться.http://php.net/manual/en/function.dirname.php
источник
Попробуй это
Изменить: удален "./", потому что это неправильный синтаксис. Без него отлично работает.
источник
Вы можете использовать функцию dirname PHP.
<?php echo dirname(__DIR__); ?>
. Это даст вам имя родительского каталога__DIR__
, в котором хранится текущий каталог.источник
Вы можете использовать
realpath
для удаления ненужной части:// One level up echo str_replace(realpath(dirname(__FILE__) . '/..'), '', realpath(dirname(__FILE__))); // Two levels etc. echo str_replace(realpath(dirname(__FILE__) . '/../..'), '', realpath(dirname(__FILE__)));
На окнах также заменить
\
с в/
случае необходимости , что в URL.источник
dirname(__DIR__,level); dirname(__DIR__,1);
уровень - сколько раз вы вернетесь в папку
источник
На один уровень выше я использовал:
str_replace(basename(__DIR__) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
или для php <5.3:
str_replace(basename(dirname(__FILE__)) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
источник
Кому, имея дело с разделяемой средой хостинга и все еще шанс иметь Current PHP менее 7.0 Кому нет,
dirname( __FILE__, 2 );
можно использовать следующее.function dirname_safe($path, $level = 0){ $dir = explode(DIRECTORY_SEPARATOR, $path); $level = $level * -1; if($level == 0) $level = count($dir); array_splice($dir, $level); return implode($dir, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR; } print_r(dirname_safe(__DIR__, 2));
источник
Я использую это, если есть абсолютный путь (это пример):
$img = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/Folder-B/image1.jpg");
если есть фотография, достаточно:
echo("<img src='/Folder-B/image1.jpg'>");
источник