Ответ 1
Для PHP <5.3 используйте:
$upOne = realpath(dirname(__FILE__) . '/..');
В PHP 5.3 до 5.6 используйте:
$upOne = realpath(__DIR__ . '/..');
В PHP> = 7.0 используйте:
$upOne = dirname(__DIR__, 1);
У меня есть структура папок следующим образом:
mydomain.com
->Folder-A
->Folder-B
У меня есть строка из базы данных, которая является "../Folder -B/image1.jpg", которая указывает на изображение в папке-B.
Внутри script в папке-A я использую dirname (FILE), чтобы получить имя файла, и я получаю
mydomain.com/Folder-A
. Внутри этого script мне нужно получить строку, которая говорит '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);
Если у вас есть php 7. 0+ вы можете использовать уровни.
dirname( __FILE__, 2 )
со вторым параметром вы можете определить количество уровней, на которое хотите вернуться.
Попробуйте это
dirname(dirname( __ FILE__))
Изменить: удалить "./", потому что это неправильный синтаксис. Без него он отлично работает.
Вы можете использовать функцию 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.
Один уровень вверх, я использовал:
str_replace(basename(__DIR__) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
или для php < 5.3:
str_replace(basename(dirname(__FILE__)) . '/' . basename(__FILE__), '', realpath(__FILE__)) . '/required.php';
Кому это выгодно, если у вас есть общий хостинг и все еще есть шанс получить Текущий 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));
dirname(__DIR__,level);
dirname(__DIR__,1);
уровень, сколько раз вы вернетесь в папку
Я использую это, если существует абсолютный путь (это пример):
$img = imagecreatefromjpeg($_SERVER['DOCUMENT_ROOT']."/Folder-B/image1.jpg");
если есть изображение для показа, этого достаточно:
echo("<img src='/Folder-B/image1.jpg'>");