web-dev-qa-db-ja.com

PHP dirname(__ FILE__)を1レベル上げる方法

私は次のようなフォルダ構造を持っています:

mydomain.com
  ->Folder-A
  ->Folder-B

「../Folder-B/image1.jpg」というデータベースの文字列があり、これはFolder-Bの画像を指します。

Folder-Aのスクリプト内で、dirname([〜#〜] 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を取得したい

58
aVC

PHP <5.3を使用:

$upOne = realpath(dirname(__FILE__) . '/..');

In PHP 5.3から5.6で使用:

$upOne = realpath(__DIR__ . '/..');

PHP> = 7.0を使用:

$upOne = dirname(__DIR__, 1);
158
Petah

Php 7.0以降を使用している場合は、レベルを使用できます。

dirname( __FILE__, 2 ) 2番目のパラメーターを使用すると、戻るレベルの量を定義できます。

http://php.net/manual/en/function.dirname.php

15
Bas van Dijk

これを試して

dirname(dirname( __ FILE__))

編集:正しい構文ではないため、「./」を削除しました。それがなければ、完全に機能します。

14
Abhishek

PHPのdirname関数を使用できます。 <?php echo dirname(__DIR__); ?>。これにより、現在のディレクトリを格納する__DIR__の親ディレクトリの名前がわかります。

6
Shane

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__)));

Windowsでは、URLで必要な場合は\/に置き換えます。

1
user133408
dirname(__DIR__,level);
dirname(__DIR__,1);

レベルは何回フォルダに戻るかです

0
dılo sürücü

誰に、共有ホスティング環境を扱っていて、現在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));
0
Deniz Porsuk

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';
0
Calin Rusu