PHPで質問です。

普通のプログラムの場合は、DOCUMENT_ROOTを環境変数で取得できるのですが、メールのエイリアスなどで動かしたプログラムだと取得できません。

何か、別の方法はありませんか??

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/10/09 01:40:41
  • 終了:2007/10/16 01:45:04

回答(4件)

id:iww No.1

いわわ回答回数101ベストアンサー獲得回数102007/10/09 01:57:36

ポイント23pt

PHP: 定義済の変数 - Manual

DOCUMENT_ROOTはApacheなどのWebサーバの環境変数です。つまり、そのPHPにブラウザなどでアクセスしたときだけ見ることが出来ます。

しかし、スクリプトで実行したときは見ることが出来ません。仕様です。




無理やり考えられる手順としては・・・

  1. あらかじめDOCUMENT_ROOTを調べておいて、プログラムに直接書いてしまう。
  2. DOCUMENT_ROOTの値をファイルか何かに書き出しておいて、スクリプトからはそのファイルを参照する。
  3. DOCUMENT_ROOTの値を表示するPHPをWeb上に置いて、スクリプトがそのURLにアクセスして取得する。

くらいだと思います。

id:tezcello No.2

tezcello回答回数460ベストアンサー獲得回数692007/10/09 09:13:16

ポイント23pt

わざわざファイルに書き出さなくても、Apache なら、httpd.conf に書いてあるのでは?


コメントに書くべき内容なので、ポイント不要です。

http://q.hatena.ne.jp/1191861637

id:KUROX No.3

KUROX回答回数3542ベストアンサー獲得回数1402007/10/09 21:37:42

ポイント22pt

Lynxというのは、テキストベースのwebブラウザのことです。

$ lynx --dump http://webサーバ/バッチ処理.php

というやり方もありますが・・・。

http://ml.php.gr.jp/pipermail/php-users/2004-September/023895.ht...

------------------------

httpd.conf から読み出すという方法は私は採用しないと

思います。私なら、回答1路線ですね。

id:okinaka No.4

okinaka回答回数38ベストアンサー獲得回数12007/10/11 23:46:57

ポイント22pt

エイリアスで実行する際に、直接 DOCUMENT_ROOT 環境変数を定義してみてはいかがでしょうか。

/etc/aliases:

test: "| DOCUMENT_ROOT='/var/www' php test.php"

test.php:

<?php
$root = $_SERVER['DOCUMENT_ROOT'];
if (!$root) {
  $root = $_ENV['DOCUMENT_ROOT'];
}

この例だと $root 変数に DOCUMENT_ROOT が入っています。

Apache から取得する場合は、$_SERVER['DOCUMENT_ROOT'] ですが、

コマンドライン上からは、$_ENV['DOCUMENT_ROOT'] となります。

http://q.hatena.ne.jp/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません