人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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


●質問者: makocan
●カテゴリ:インターネット ウェブ制作
✍キーワード:PHP エイリアス プログラム メール 普通
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● いわわ
●23ポイント

PHP: 定義済の変数 - Manual

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

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




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

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

くらいだと思います。


2 ● tezcello
●23ポイント

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


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

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


3 ● KUROX
●22ポイント

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

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

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

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

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

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

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


4 ● okinaka
●22ポイント

エイリアスで実行する際に、直接 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/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ