• ベストアンサー

DocumentRootの設定方法

Apache×PHP4でドキュメントルートへのリンクがうまく動作しません。 PHP内でリンクアドレス"/hoge"と書くとディスクのルートを指してしまい、サーバのドキュメントルートを指してくれません。サーバの設定が悪いのでしょうか、ドキュメントルートに関してはhttp.confなども変更してはいないのですが。

  • basil
  • お礼率31% (40/127)

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

  • ベストアンサー
  • gaball
  • ベストアンサー率61% (27/44)
回答No.1

PHPのプログラム内での話ですよね? プログラム内では当然の動作ですので、 1.相対パス指定でファイルを指定する 2.define("DOCUMENT_ROOT","/usr/local/apache/htdocs/....");などと   指定して実際のパスを書く前につける。 どちらかでやるのがよろしいのではないかと。 絶対パスで指定するとサーバ環境が変更になった際に面倒な事になる事が多いです から環境定義用のファイルを別に作成してそこで全てdefineして、そのファイルをプログラムの冒頭でincludeするのがファイルの配置なども後からわかりやすくミスも少ないと思いますのでおすすめです。

basil
質問者

お礼

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

関連するQ&A

  • ~user/ をDocumentRootに設定したい。

    次の環境で開発用テストサーバたてて、複数のウェブサイトの動作確認をlocalhost/~foobarで行いたいと思っています。 Windows XP SP2 Apache 1.3.33 ---- D:\Documents and Settings\Administrator\My Documents\Site\users\foobar\public_html の直下にimagesフォルダを置き、 http://localhost/~foobar/images/spacer.gif にアクセスできるようにするためのapacheのhttpd.confの記載方法を教えてください。 現在の症状は次のようになっています。 ---- http://localhost/~foobar/index.html このhtmlの画像/cssディレクトリのリンクは、次のようにルートをみるようになっています。 img src="/images/spacer.gif" 私はここで次のURIにアクセスすることを意図しています。 http://localhost/~foobar/images/spacer.gif そこで、D:\Documents and Settings\Administrator\My Documents\Site\users\foobar\public_html の直下にimagesフォルダを置き、apacheのhttpd.confに次のように記載しましたが、思い通りに画像などが表示されません。 DocumentRoot "D:/Documents and Settings/Administrator/My Documents/Site/users/*/public_html" <Directory "D:/Documents and Settings/Administrator/My Documents/Site/users/*/public_html"> <IfModule mod_userdir.c> UserDir "D:/Documents and Settings/Administrator/My Documents/Site/users/*/public_html" </IfModule> よろしくお願いいたします。

  • 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
  • ApacheのDocumentRootについて

    こんにちは。PHPの初歩的質問です。 下記のURLを参照しながら、Apache2.2.8 と PHP 5.2.5 の設定をしています。 http://pocketstudio.jp/log2/2007/01/windows_apache_224_php_520.html ブラウザで http://localhost に接続すると、 "It work!" と表示されました。 しかし、 サンプルとして、ドキュメント・ルートに test.php というファイルを新規作成し、(ファイルの中身は <?php phpinfo(); ?> ) ブラウザから http://localhost/test.php へアクセスしても、つながりません。 気になっている点が2つあります。 (1)実は、上記URLを参照していますが、Appacheのconf/httpdの設定で、RootDirectory の部分は "C:\htdocs" としています。この中に"test.php"ファイルを入れています。これでいいのでしょうか? (2) # This should be changed to whatever you set DocumentRoot to. # C:\htdocs"> Appache の conf/httpd内に、↑のような部分があります。 この C:\htdocs"> は、左右非対称な気がしますが、これでいいのでしょうか? その他、ここをチェックしたほうが良い点などありましたら、ご指摘いただきたく、よろしくお願いいたします。

    • 締切済み
    • PHP
  • 同じPHPの処理を必ず通るようにしたい

    お手上げ状態となってしまったので質問させてもらいました。。 行いたいことは、あるサイトのドキュメントルート下のどのファイル(html,php)がリクエストされた場合でも必ず /hoge.php という phpを通り、フィルタ的な処理が行えるようにしたいという事です。(しかも、CGIとしてではなくモジュールとして) .htaccess でphp_value auto_prepend_file などを使用すればいけそうだというところまでは辿り着いたのですが、問題が二つあり、 ・できればだが、クライアントに出力結果が送出される直前に処理をしたい ・上記設定が制限されているケースがあるかが心配 というものです。 つまり、これ以外に今回やりたいことを満たす方法はないかどうかを知りたいのです。 apache php に詳しい人がいたら是非教えてください! よろしくお願いします! ちなみに環境は様々なWEBサーバのデフォルト環境で動作するようにしたいです。サーバの設定を変更したり、httpd.conf を触ったり、 何かをインストールする必要があったりは無理です・・。(apache以外は考慮する必要はありません)

    • ベストアンサー
    • PHP
  • DocumentRootを変えたい

    はじめhtcocsと設定されていますが E:ドライブの文書管理ホルダーに 変えたところページが表示されません DocumentRoot "E:" とすると、表示されます ”文書管理”という 漢字でのホルダー名はダメですか 構成; WindowXPにApache、PHPをインストールしています 設定変更は; http.confを下記のように変更しました ##0906 DocumentRoot "C:/Program Files/Apache Group/Apache2/htdocs"  ↓ DocumentRoot "E:/文書管理" ##0906 <Directory "C:/Program Files/Apache Group/Apache2/htdocs">  ↓ <Directory "E:/文書管理">

    • ベストアンサー
    • PHP
  • CentOS WEB開発 フォルダパーミッション

    職場で、Linuxの経験が無いにも関わらず WEBサイトのサーバ移行をしていまして、躓きました。 新サーバはAWSにてCentOS 6.9 Apache 2.2.15 php 5.3.3となっています。 httpd.conf内にて、デフォルトのDocument Rootから 変更し、そのフォルダ以下にhtmlやphpといった必要な ファイルを置いています。 デフォルトのDocument Rootやその近辺(一つ上の階層)では 置いたhtmlやphpをブラウザで表示することができますが 新たにDocument Rootに設定したフォルダだと 403 Forbidden You don't have permission to access /index.html on this server. と表示されたので、該当のフォルダのパーミッションを 755(775や777も試しました)、ファイルのを644に設定し WEBで見ても現象は変わりません。 -rw-r--r--. 1 apache apache 24 Dec 25 01:52 index.html -rw-r--r--. 1 apache apache 3049 May 16 2017 index.php drwxr-sr-x. 9 apache apache 4096 Dec 25 08:13 www(←Document Rootに設定したフォルダ) .htaccessも変更したDocument Rootフォルダに置いてます。 (中身は下記2行ですが) AddHandler x-httpd-php5 .php .phps DirectoryIndex index.php index.html index.htm 他に何か考慮する点はありますでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP
  • Apacheのhttpd.confの設定方法がわかりません

    ただいまPHPとPerlを勉強しようと思い、環境設定に取り組んでいます。 PHPの本を買ってきて、その本に付属しているPHPDEV5というPHPとApache2とMySQLの付いているものをインストールしました。PHPの方は何の問題もなく動作しています。 Perlも本を買ってきたんですが、Perlの本の方もサーバとしてApache2を使っているんですが、最初にインストールしたPHPDEV5付属のApache2のhttpd.confファイルの中身が違っていて、Perlの解説本のとおりにhttpd.confファイルを修正できないため、どのように修正すれば、CGIができるようになるのか分かりません。 どなたかもし設定ファイルの方法がわかる方がいましたら、教えてください。よろしくおねがいします。

    • ベストアンサー
    • Perl
  • apachサーバテスト用にDocumentRoot

    お世話になります。 apacheサーバにphpで動くHPを作成しているのですが、 テスト用にDocumentRootからdevフォルダを一つ掘って 本番のソースと同じものを置いてみました。 しかし、例えばhtmlで<a href='/index.php'>という様にリンク先を 指定していると、DocumentRoot/index.phpにリンクしてしまいます。 相対参照に全部置き換えればいいのですが、 そうしないですむテスト環境を作成するにはどうすれば よろしいでしょうか? httpd.confのDocumentRootを変えればできるのですが、 そうすると本番環境のDocumentRootは見れなくなります。 あたりまえですが。その対処方法はできません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • apacheの設定?

    FreeBSD+Apache1.3.27+PHP3系でWebサーバを運用しております。 ドキュメントルートに、hogehoge.phpというファイルを置くと、 http://www.XX*.jp/hogehoge.php の動作は問題ないのですが、下記全てで同じページが表示されるようです。 http://www.XX*.jp/hogehoge http://www.XX*.jp/hogehoge/ http://www.XX*.jp/hogehoge/index.php 特に問題はないのですが、これはどのような理由でしょうか?関係しているモジュールやapacheの設定部分を知りたいと思います。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • PHP5の設定が上手く行かない

    WindowsXP HomeEdition上でApache2.2.4とPHP5の設定をしているのですが、エラーになってしまってApacheを起動できません。 ちなみにActivePerlとApacheでは動作確認が取れています。 Googleで「インストール PHP5」と入れて表示する設定方法は3~4件試しました。 起動時にコマンドプロンプトに表示されるエラーメッセージは httpd.exe: Syntax error on line 115 of C:/Program Files/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load C:/php/php5apache.dll into server: \x8ew\x92\xe.......... というものです。 httpd.confの該当行には確かに LoadModule php5_module C:/php/php5apache2.dll という記述があり、C:/phpにはphp5apache2.dllが存在しています。 検索で引っかかったどの方法を試してもそこで躓いてしまいます。 Perlの設定が邪魔をしているとか、何か考えられることがあるでしょうか? 宜しくお願いします。

    • ベストアンサー
    • PHP