• ベストアンサー

path文字列の操作

申し訳ありませんphp初心者です 教えていただけますか? $_SERVER['DOCUMENT_ROOT']; で取得した、 '/home/hogehoge/public_html' の 最後のディレクトリ分 を削除して '/home/hogehoge/' にしたいのですが、どのようにすれば良いでしょうか? よろしくおねがいします。

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

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

  • ベストアンサー
  • atsushifx
  • ベストアンサー率50% (9/18)
回答No.3

最後のpublic_htmlに"/"がついてないなら dirname が使えます。

psychesine
質問者

お礼

ありがとうございます おかげで出来ました!!

その他の回答 (2)

  • UmJammer
  • ベストアンサー率58% (115/196)
回答No.2

限定されたケースなので、正規表現を使うのも良いかもしれません。 $path = ereg_replace("[^/]*$", null, $_SERVER["DOCUMENT_ROOT"]);

psychesine
質問者

お礼

ありがとうございます 助かります!! やってみます!

  • tackn910
  • ベストアンサー率0% (0/2)
回答No.1

素人なのですがこんな感じかな? define("ENCODING", "EUC-JP"); $str = '/home/hogehoge/public_html'; $idx = mb_strrpos($str, "/", ENCODING); $result = substr($str,0,$idx); echo $result; ↓だれかお願いします>< http://okwave.jp/qa5068321.html

psychesine
質問者

お礼

ありがとうございます 助かります!! やってみます!

関連するQ&A

  • php内でユーザーディレクトリのパスを取得したい

    教えて頂けますか? 初心者です $_SERVER['DOCUMENT_ROOT']を取得すると、 ”/virtual/122.144.211.155/home” のようなレンタルサーバを使用しています。 どのディレクトリでも取得するパスが ”/virtual/122.144.211.155/"にしたいのですが どのようにすれば、良いでしょうか? よろしくおねがいします。

    • 締切済み
    • PHP
  • Linux + phpで2バイト文字のパス指定

    RedHatLinux4 update6 + Apache2.2.8 + php5.2.5でプログラムを作成しております。 //server/share/hogehoge を /opt/lampp/htdocs/share にcifsマウントして、サーバの"hogehoge"ディレクトリにある"補毛補毛"というディレクトリにアクセスできるようphpに記述したいのですが、うまくいかずに困っています。 /opt/htdocs/test.php ------------------------------------------------------------------- $glob="./hogehoge/補毛補毛"; chdir($glob);           //カレントディレクトリ移動 foreach (glob("*.xls") as $filepath) { echo "$filepath size " . filesize($filepath) . "\n"; } ------------------------------------------------------------------- 具体的には上記のようなソースを書いたのですがうまく動きませんでした。./hogehoge/までなら動くのですが、そこに2バイト文字を含めるとうまく動きません。 どうにかしてうまく動かす方法はありませんでしょうか。サーバ側のディレクトリ名を変更することはできません。 ご回答、宜しくお願いいたします。

    • ベストアンサー
    • PHP
  • ドキュメントルートについて

    すいません、サーバーを借りた際のドキュメントルートについてなんですが、ドキュメントルートとは同一ドメインサーバ内の公開エリアでの最上位階層のこと。ということらしいんですが、このドキュメントルートがサーバによってpublic_htmlやhtdocsの場合があるんですが、これは、 ドキュメントルート=public_html=htdocs と考えて良いんでしょうか?   また、ROOT_PATHというのは各サイトの最上位階層のディレクトリ(各サイトのindex.htmlが入っている)のことで良いんですよね? 宜しくお願いします。

  • ドキュメントルートのphpファイルが削除できない

    ●質問の主旨 ドキュメントルート(var/www/html)に配置した、 phpファイル(quiz.php)をrootユーザーから、root権限で rmコマンドで削除しようとしましたが、 メッセージが表示されるだけで削除できません。なぜでしょうか? ご存知の方がいらっしゃいましたら、ご教示願います。 ●質問の補足 現在のコマンドの状況は以下の通りです。 [root@linuxserver html]#rm quiz.php rm: remove regular file 'quiz.php'? [root@linuxserver html]#ls -l -rw-r--r-- root root 781 Jan 13 22:11 quiz.php またこのquiz.phpファイルはwindowsクライアントPCで作成し、 以下の経過でドキュメントルートにアップロードしました。 1.WinSCPのSFTPで一般ユーザのホームディレクトリに転送 ↓ 2.一般ユーザのホームディレクトリ(/home/user)から cpコマンドでドキュメントルート(var/www/html)にコピペ ●環境 クライアント側:windows8.1 サーバー側:Linux(CentOS6.0) サーバーソフト:Apache2.2.15

  • 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
  • ドキュメントルートについて(サイト公開パス)

    現在プログラミングを学んでいる超初心者です。 現在PHPを勉強中でレンタルサーバーを使い 動作確認などを行いたいのですがうまくいきません。 レンタルサーバーはウェブクロウと言うところを使っています そしてFFFTPでアップロードしても HTTP403がでたり 「このページは表示されません」になったりしいろいろ調べたりしましたが 現在お手上げ状態です。 サーバー情報に ドキュメントルートというのがありました これは何か関係があるのでしょうか? ドキュメントルートは下記のとうりです。 /home/nakahiro7/[ドメイン名]/public_html/ その他何かご指摘、方法があれば教えていただければ幸いです。 目的は PHPの動作確認、MYSQLとちゃんと連携できているかなどを確認したいです。(会員登録のような機能などちゃんとできてるか確認したい) 無知な私にどうかお知恵をおかしください。

    • ベストアンサー
    • MySQL
  • 誤って/home配下を削除してしまいました;;

    CentOS5.0で/home/hogehoge配下にMaildir/とMaildir /とういうディレクトリがあったので、Maildir /を削除しようと思い以下のコマンドを実行しました。 [root@111 ~]# cd /home/hogehoge [root@111 hogehoge]# rm -rf Maildir / 後日hogehogeユーザでログインしたところ, -bash: dircolors: command not found -bash: /usr/bin/id: No such file or directory -bash: [: =: unary operator expected -bash: /sbin/consoletype: そのようなファイルやディレクトリはありません 確認してみると/home配下が全て削除されてしまっていました。 rootユーザでのコマンドもパスが通っていないようでだいぶ使えないコマンドがあります。 色々試すも復旧にいたっていません。 お分かりなる方、復旧方法を教えてください。 よろしくお願いします。

  • define でのルートディレクトリの定義について・・・。パスが納得できません。

    宜しくお願いします。 Smarty を使用して PHPを勉強しています。 Smartyのデフォルトを変更しようと、 「MySmarty」として新規にクラスを作成しました。 ソースの先頭で、 define("ROOT_DIR",$_SERVER['DOCUMENT_ROOT']."/.."); として、ROOT_DIRにルートディレクトリまでのパスを記憶させています。 全ソースは下記をごらんくらさい。 そこで、  define("ROOT_DIR",$_SERVER['DOCUMENT_ROOT']."/.."); にある、最後の ."/.."); が納得いきません。。。 最初の . ピリオドは連結のためのものだとわかりますが、 あとの/.. はディレクトリの階層をあげる指示ですよね? てなると、クラスの定義のなかで使用するルートディレクトリへのパス が、 おかしく思えてきます。書籍の通りにやっているので、 この通りにやるとうまくいっていますが、自分的になっとくがいかなく・・。 ソースは下記のようになってます。 特に $this->template_dir  のテンプレートディレクトリへのパスを 再設定しているところですが、 ROOT_DIR."/templates" ということは、ルート/../templates  となりますよね? 作業フォルダの図はこの通りです。↓ C:\xampp   |   libs     |-MySmarty.class.php (下記のソースファイル)   |   |   templates       |-input.tpl   |  templates_c <省略> なんとなくですが、ルート/../templates  ではなくて、 ルート/templates なようなきがします。 わかりにくい説明だったかもしてませんが、何卒宜しくお願いいたします。 ______________________________ define("ROOT_DIR",$_SERVER['DOCUMENT_ROOT']."/.."); require_once("Smarty.class.php"); class MySmarty extends Smarty { function MySmarty (){ $this->template_dir = ROOT_DIR."/templates"; $this->compile_dir = ROOT_DIR."/templates_c"; $this->left_delimiter = "{{"; $this->right_delimiter = "}}"; $this->default_modifiers = array('escape'); $this->Smarty(); } } ____________________________

    • 締切済み
    • PHP
  • include_pathの設定

    .htaccessでインクルードパスの設定をしたいのですが、 500 internal server error がでます。 どうしたらエラーが出ず正しくできるのでしょうか。 よろしくお願いします。 ・下記は.htaccessファイルに書き込んだ内容 php_value include_path ".:/home/u62/public_html/PEAR" ・下記はPEARフォルダの配置場所 /home/u62/public_html/PEAR ・下記は現在のinclude_path include_path .:/opt/php-5.3/pear

    • ベストアンサー
    • PHP
  • SSLに設置したらディレクトリパスになってしまう。

    全くの初心者でお恥ずかしいのですが、 plaincart(www.phpwebcommerce.com)をSSLにて設置したいと思っています。 下記の式はplaincartのconfig.phpの一部でサーバルートをセットアップする事との 所です。(検討違いかもしれませんが、たぶんこのへんが怪しいと思う所を コピペします。) $thisFile = str_replace('\\', '/', __FILE__); $docRoot = $_SERVER['DOCUMENT_ROOT']; $webRoot = str_replace(array($docRoot, 'library/config.php'), '', $thisFile); $srvRoot = str_replace('library/config.php', '', $thisFile); define('WEB_ROOT', $webRoot); define('SRV_ROOT', $srvRoot); 以上を 普通のhttpに設置すると(ステップサーバーです。) img src="/hoge/hogehoge/plaincart/images/image.png" のようにリンク画像その他が正常にリンク出来るのですが https (ssl)に設置すると img src="/export/usr/home/ex********/ssl_html/hoge/hogehoge/plaincart/images/image.png" のようにSSLディレクトリのパスになってしまい、リンク出来ないで途方にくれています。 どのような理由が考えられますでしょうか? またどのように記述し直したらsslでもリンクして正常に設置出来るようになるでしょうか? どうかよろしくお願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう