2012-04-24 10 views
1

私はOcober昨年からうまく動いていたPHPスクリプトを持っています。最後に2ヶ月前に覚えていましたが、今日は実行中に_SERVER ['DOCUMENT_ROOT']変数に問題があります。DOCUMENT_ROOTは設定されていますが、スクリプトで取得できません。どうして?

_SERVER配列を見ると、設定されていません。私がスクリプトで実行する場合:

phpinfo(); 

変数がそこにあります。しかし、それを呼び出す:

$_SERVER['DOCUMENT_ROOT'] 

戻り値は、その理由は何

をゼロ?どのように私は再びスクリプトでそれを使用できますか?私は原因がPHPまたはApacheのアップデートであると考えていますが、両方とも過去2ヶ月間に数回更新されています。

また、php.iniファイルにDOCUMENT_ROOTが表示されません。私は異なったdoc_rootがあります。

マイPHP: PHPバージョン5.3.5-1ubuntu7.7 のapache: PHPバージョン5.3.5-1ubuntu7.7

+0

'のvar_dump($ _ SERVER);' – zerkms

+0

私が書いたように、私はそれはのように(空)、設定されていない示していることを実行するとDOCUMENT_ROOT – quinestor

答えて

1

DOCUMENT_ROOTは通常、CGI経由であなたにスクリプトを呼び出す前に(アパッチ)ウェブサーバが設定した環境変数です。あなたのWebサーバーにバグがあるか、または設定が間違っていると、この環境変数がもう設定されていないことがあります。

mod-rewrite、mod-cgi、mod-setenvなどでデバッグや修正を試みることができます。それがすべてあなたの頭の上にある場合は、サーバー管理者に連絡し、多くの理由がある可能性があるため、問題について話し合ってください。

+0

はい、私は端末からスクリプトを呼び出していたので、varが空であることが判明しました。したがって、Apacheをスキップします。ありがとう! – quinestor

1

print_r($_SERVER)を試してみて、可能性がある場合、それは本当に

+0

に空の文字列が含まれている – quinestor

+0

あなたは、コマンドラインからスクリプトを呼び出していますか?ブラウザからの通常の呼び出しの代わりに? – Antagonist

+0

はい、ありがとうございました。ブラウザで試してみると それから、Hakreが言ったように、このvarはapacheから来ています。端末を呼び出すとvarが空になるからです。 – quinestor

0

を設定していますかどうかを確認Apache設定の問題:Apacheの設定ファイルにドキュメントルートを定義しましたか?

そうでない場合は、あなたが使用してそれを回避することができます

dirname(__FILE__) 

か:

substr($_SERVER['SCRIPT_FILENAME'], 0, -strlen($_SERVER['SCRIPT_NAME'])); 
関連する問題