2012-03-15 13 views
5

私は自分のサイトを保護するための簡単な既製の承認ツールを使用しています。このツールでは、このコード行をすべての.phpページの上部に適用する必要があります。 Auth.phpはルートレベルにあります。PHPの絶対パスをrequireonce

<?php ${(require_once('Auth.php'))}->protectme(); ?> 

サブフォルダ内のファイルを含め、すべてのファイルにこのコード行を追加する必要があります。しかし、私はどのようにrequire_once in phpに示すようにメソッドを適用するのか分からないので、常にprotectme()と一緒に絶対的にリンクされていることを確認します。関数。

いずれかの啓発が認められます。

乾杯。

+0

この機能の目的は何ですか。 – yoda

答えて

6

変数を絶対パスに設定します。 $ _SERVER ['DOCUMENT_ROOT']は、サーバ、ルートパスを格納するPHPのグローバル変数です。残りのパス情報をスクリプトに挿入するだけです。たとえば、あなたのウェブサイトが/ var/www /にあり、あなたのスクリプトが/ var/www/scriptsに存在する場合は、以下のことを行います。

$path = $_SERVER['DOCUMENT_ROOT'] . '/scripts/Auth.php'; 
require_once($path); 
2

相対パスを使用して取得することができます。

1レベル戻る:../Auth.php

2つのレベルアップ:​​

など

+0

ヒントは良いですが、それは必ずしも機能しません。これは['__DIR__'](http://www.php.net/manual/en/language.constants.predefined.php)と組み合わせて動作します。 – hakre

+0

こんにちは。ありがとうございますが、これらを個別にソートするには時間がかかりすぎます。 – fitzilla

+0

@fitzilla、その場合は、hakreまたはDampeS8Nのソリューションに従ってください。彼らはあなたの問題に対する良い答えです。 INIの変更を行っていることを覚えておいてください。INIの変更は、コードが配備されている他の場所で変更する必要があります。 – Brad

1

あなたinclude_pathにルートレベルのディレクトリを追加します - PHPは、あなたのための残りを行います。複雑な変数や定数などはありません。

2

php.iniを変更して、インクルードパスをそのインクルードファイルへのパスに変更する必要があります。次に、自分の場所に関係なく、すべてのページにパスなしでそれらを含めることができます。

More Details

-1

理由だけではなく、絶対パスを使用していませんか?それはサイトなので、あなたがphp.iniにアクセスできない場合

require('/auth.php'); 

は、たぶん私はあなたの質問

+0

は動作しないため –

0

を誤解しています、私は

include $_SERVER['DOCUMENT_ROOT']."/"."include_me.php"; 
0

前に、最も簡単な方法は、このようなものを使用しました全体の変更は、インクルードパスの最初のディレクトリをphp.iniに追加することです。

php.iniを変更できない場合は、a few other options for adding it to the include pathがあります。

1

すでに言われていることに加えて、すべての共通機能を集中化することをお勧めします。 common.phpのようなファイルを作成し、アプリケーションに必要なものすべてを含めてから、すべてのスクリプトのファイルをインクルードします。

また、相対的な処理を行う良い方法は、__FILE__マジック定数と組み合わせてdirname()関数を使用することです。例:

require_once dirname(__FILE__) . '/../lib/common.php';