• ベストアンサー

【PHP】スクリプトから相対パスを知りたい

現在、XHTML+PHPにてサイトを構築している者です。 PHP スクリプト ファイル自身から見たトップディレクトリまでの相対パスの深さを知りたいのですが、どうすれば良いのでしょうか? 例 DocumentRoot/hoge/piyo.php → ../ DocumentRoot/hoge/piyo/fuga.php → ../../ DocumentRoot/hoge/piyo/fuga/fuuga.php → ../../../ 例に示したように取得する方法を知りたいです。

  • PHP
  • 回答数2
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

例示をそのまま表現すると <?PHP $name=$_SERVER["SCRIPT_NAME"]; print str_repeat('../',substr_count($name,'/')-1); ?>

koshineight
質問者

お礼

丁寧な解説、ありがとうございます。 提示されたソースコードにて取得できました。

その他の回答 (1)

回答No.1

http://www.sound-uz.jp/php/note/relativePath ↑は参考になりませんか? realpathから求めればいけそう。

koshineight
質問者

お礼

ありがとうございました。

関連するQ&A

  • javascript 相対パス表示

    javascirptで、現在のページのディレクトリを取得し サイトルート相対パスで表示させるには どうしたらよいでしょうか? 例;http://testweb.co.jp/test01/test02/test.html   ↓ サイトルート相対パスでディレクトリのみを表示  /test01/test02/

  • Perlで可変長の先読み戻り読みができない

    Perlスクリプトで、以下のような置換をしようとしています。 置換前 piyo … fuga … piyo 【piyo … fuga … piyo … hoge … piyo】 fuga … piyo 置換後 【ぴよ】 … fuga … 【ぴよ】 【piyo … fuga … piyo … hoge … piyo】 fuga … 【ぴよ】 【】が入れ子にならないように、【】の外の部分でだけマッチ、置換しようと正規表現を考えていたのですが、いくらやってもできません。調べていたら、Perlでは可変長の先読み戻り読みをサポートしていないらしいことがわかりました。 正規表現一つでも、複数行のスクリプトでも構いません。どのようにすればよいでしょうか。

  • シェルスクリプトでの絶対パスの取得

    UNIXのシェルスクリプトで、引数として渡された相対パスから絶対パスを取得するには、そうすればよいでしょうか。 cd 相対パス 変数=`pwd` これが一番普通のやり方でしょうか。 change directory しなくてもできる方法がないのかなあと思ったもので。

  • 相対パスか絶対パスって何?

    CGIサイト内検索を設置したいと思っていますが、相対パスか絶対パスって言う言葉が出てきます。 (例)path/にはsearch.cgiまでの相対パスか絶対パスが入ります。 相対パス・絶対パスとは何でしょう? サーバーにあるホームディレクトリのフルパスとは違うのですか? 教えてくださいお願いします。

    • 締切済み
    • CGI
  • 相対パスか絶対パス??

    CGIサイト内検索を設置したいと思っていますが、相対パスか絶対パスって言う言葉が出てきます。 (例)path/にはsearch.cgiまでの相対パスか絶対パスが入ります。 相対パス・絶対パスとは何でしょう? サーバーにあるホームディレクトリのフルパスとは違うのですか? もしフルパスと同じだと言った場合・・・ 「path/にはsearch.cgiまでの相対パスか絶対パスが入ります」ではフルパスが/home/hatenaだった場合は 下記にはどのようにはいるのでしょうか? (例)<form method="GET" action="path/search.cgi"> 再投稿ですが、もうチョット具体的に書いてみました 教えてくださいお願いします。

    • 締切済み
    • CGI
  • トップディレクトリから相対パスで記入ってどういう意味なのでしょうか?

    ------------------------------------------------------------------------------ 現在の階層です↓ Macintosh HD/作業/HP/○○○/△△△/php/emoji/images ------------------------------------------------------------------------------ imagesフォルダをのパスをトップディレクトリから相対パスで記入。 とあるのですが、正解がよく分かりません。 /Macintosh HD/作業/HP/○○○/△△△/php/emoji/images ↑コレは絶対パスですよね? 相対パスの記述を教えていただけますか?

    • ベストアンサー
    • HTML
  • コマンドプロンプトで相対パスの取得

    コマンドプロンプトにて、絶対パスから相対パスを取得する方法はございますでしょうか? hoge  ├ hoge2.txt  └ hoge3.txt という階層で、 for %%A in (hoge\*.txt) do ( echo %%A ) と for で回すと、%%Aには絶対パスが入ります。 この%%Aに相対パス(hoge\hoge2.txt)を格納する方法、もしくは%%Aから相対パスを抜き出す方法が知りたいのです。 VBなど別プログラムを起動させずに、あくまでもコマンドプロンプト上での方法がありましたら、どうかご教授下さいませ。

  • PHPでのドキュメントルート指定方法

    PHPでのドキュメントルートの指定方法がうまくいかず困っています。 マルチドメインで組んでいます。 公開ディレクトリのルートは /home/hoge/www になります。 wwwの中に/piyo/でマルチドメインを組んでいます。 →絶対リンクを/home/hoge/www/piyo/ ここに指定したいです。 あるサイトを見てcommon.phpを作成し、index.phpと同じ階層に置き、index.phpの頭に <?php include 'common.php'; ?> を指定すると設定ができると記載されていたので下記の様に設定しました。 // common.php // <?php // サーバー上の絶対パスを記入 // これは公開ディレクトリのルート(サイトのルートディレクトリ)と一致 $__DOC_ROOT__ = '/home/hoge/www/piyo/ <http://piyo.co.jp/> '; ?> // index.php // <?php include 'common.php'; ?> <!doctype html> <html lang="ja"> … <?php echo $_SERVER['DOCUMENT_ROOT']; ?> … </html> echoで呼び出してみましたがサイトのルートディレクトリが /home/hoge/www こちらになり変更されていませんでした。 これを /home/hoge/www/piyo/ に変更したいと思います。 ご回答よろしくお願い致します。

    • ベストアンサー
    • PHP
  • ウェブマスターツールのURLの削除について

    ウェブマスターツールでURLを削除リクエストしたのですが、他のディレクトリも対象になるのでしょうか。 例 www.hoge.com/piyo/ piyoを削除リクエストした場合 www.hoge.com/fuga/ のサイトも対象になりますか。 よろしくお願いします。

    • ベストアンサー
    • CSS
  • Linux シェルスクリプトでの XML 読み込み

    次のような xml があります。 ------------------------------------------------------------------------------------------------------------------ <?xml version="1.0" ?> <ROOT> <hoge> <fuga> <piyo>/var/log/tokyo</piyo> <hogera>7</hogera> <hogehoge>*.log</hogehoge> </fuga> <fuga> <piyo>/var/log/osaka</piyo> <hogera>3</hogeara> <hogehoge>*.log</hogehoge> </fuga> </hoge> <foo> <bar> <baz>/media/tokyo/tokyo.zip</baz> <qux>/var/log/tokyo</qux> <quux>7</quux> <foobar>*.log</foobar> </bar> <bar> <baz>/media/osaka/osaka.zip</baz> <qux>/var/log/osaka</qux> <quux>3</quux> <foobar>*.log</foobar> </bar> </foo> </ROOT> ------------------------------------------------------------------------------------------------------------------ 1)要素 qux の値を取り出してパスを評価 2)パスが存在すれば要素 foobar の条件に一致したファイルを要素 baz にアーカイブする というシェルスクリプトを作成したいのですが、良い方法が分かりません ご教授いただければ幸いです。

専門家に質問してみよう