2012-02-22 4 views
0

Apache Serverを実行しているWindows 7 OS、MySQLでPHP 5.3でWebアプリケーションを構築しています。Windows Apacheサーバで動作しないbasename(__ FILE__)を使用したPHPリダイレクト

このリダイレクトは

<?php 
    // this is the path 
    // C:\Program Files (x86)\Apache Software Foundation\Apache2.2\htdocs\Biohouse\member\public\index.php 

    $path = dirname(__FILE__).'\public\index.php'; 
    header("location: $path"); 


while this working 

$path = '/public/index.php' 

を動作しません。しかし、私は最初の方法を使用するようにします。助けや助言をいただければ幸いです。

+0

その裏、クロスプラットフォームのcompatiblityを維持することが知られて事実を通常使用されるべきであるスラッシュ。なぜあなたは代わりに最初の方法を好むのですか? –

+0

スラッシュを反転させますか? – jgroenen

+0

物理パス(c:\ apache \ htdocs \など)とURL(http:// localhostなど)との違いはありません – mishu

答えて

2

dirname(__FILE__)は、ローカルファイルシステム内のフォルダへのパスを与えます。一方、/public/index.phpは、WebサーバーのWebサーバー/仮想ホストのドキュメントルート内のパスです。 できません__FILE__を使用してURLを作成します。

+0

この場合、どうすればいいですか? MVCでは、dirname()を使用します。 –

+1

問題は 'dirname()'ではなく '__FILE__'です。 'echo' '__FILE__'を実行すると、ファイルシステム上のファイルパスであることがわかります。しかし、 "ウェブサーバーの世界"は文書のルートから始まります。 '__FILE__ 'から得られる絶対パスからドキュメントルートを削除することができます。これは 'mod_rewrite'などを使わない限り動作します。 (サイドノート: "MVC"はパターンです...) – KingCrunch

+0

私はそれを試してみましょう。ありがとう –

-1

$path = dirname(__FILE__).'\public\index.php'; header("location: $path"); 

を使用してみてください、ここでPHPS魔法の定数を見てください:http://php.net/manual/en/language.constants.predefined.php

+0

あなたは基本的にまったく同じ過ちをしています。 http://php.net/dirnameを見てください。この関数はURLではなくパスを返します。ユーザーをGoogleにリダイレクトするのではなく、/ home/html/bla/bla/bla/ – mishu

+1

にリダイレクトしますまたは、 "Hey、私のリンク' x ' – KingCrunch

+0

をクリックしてください。コードフォーマットを使わないで投稿を見ました。私が気づいた最初のことは '__FILE__'の代わりに' FILE'でした。 – pmatsumura

関連する問題