2012-02-22 5 views
0

私は何か愚かでおそらく明白なことをしていますが、わかりません。私のheader.phpでは私が持っている:これを使用して

define('ABSPATH', $_SERVER['SERVER_NAME']); 
require_once(ABSPATH . "/config.php"); 

は、次のエラーを生成します。私はlocalhost/config.phpに直接移動ただし、(現在は、それが文をエコーされるだけの簡単な1行のファイル

Warning: require_once(localhost/config.php): failed to open stream: 
No such file or directory in C:\wamp\www\inc\header.php on line 4 
Call Stack: 0.0002 684176 1. {main}() C:\wamp\www\index.php:0 0.0003 
696152 2. require_once('C:\wamp\www\inc\header.php') C:\wamp\www\index.php:2 
Fatal error: require_once(): Failed opening required 'localhost/config.php' (include_path='.;C:\php\pear') in C:\wamp\www\inc\header.php on line 4 Call Stack: 
0.0002 684176 1. {main}() C:\wamp\www\index.php:0 0.0003 696152 2. require_once('C:\wamp\www\inc\header.php') C:\wamp\www\index.php:2 

です) それが動作します。

私は間違っていますか?

答えて

3

$_SERVER['DOCUMENT_ROOT']は、トリックに

+2

1あなたは、 'localhostの/ config.php'が彼のブラウザで動作理由の説明が正しいですが、ないといえいいだろうが必要です。 'URL fopen wrappers'と、require(" http:// "。ABSPATH。" /config.php ")が有効になっている方法を説明すると、それは悪い考えです。 – Paulpro

+0

それはトリック、ありがとう! @ PaulP.R.O。 - なぜそれが悪い考えであると説明しますか?私は何を使用すべきですか? –

+1

'require'を' http'と一緒に使うのは悪い考えです。なぜならあなたのrequire/includeはすべてhttpで作られるからです。これは、ファイルが開いているサーバーと同じサーバー上にあるため、必要ではありません。 '$ _SERVER ['DOCUMENT_ROOT']'はあなたのウェブルートへのファイルシステムパスを与えます。そこからconfig.phpにアクセスできます。 – Paulpro

0

あなたのWindowsシステムにバックスラッシュを使用するつもりはありませんでしたか?

また、ファイルがlocalhostフォルダのウェブルートにあることを確認してください。

2

include sおよびファイルシステムパスとサーバー仕事から見たファイルで動作する何かを行う必要があります。 C:\foo\barは、ファイルシステムのパスです。 localhostではない、localhostは、ネットワークから見たURLのホスト名です。ファイルlocalhost/config.phpは、ネットワーク経由でURLとして扱われるときに有効です。ローカルシステム上の同じファイルにはC:\wamp\www\config.phpのようなパスがあり、これはrequire_onceに使用する必要があります。

0

は、以下試してみてください。

define('ABSPATH', $_SERVER['DOCUMENT_ROOT']); 
require_once(ABSPATH . "/config.php"); 
関連する問題