2011-12-24 22 views
0

私のテストサーバーはwindowsです。 ライブサーバーはUNIXです。ウィンドウとUNIXパスの違い

私は相対パスを使用していましたが、どちらも同じように動作していました。 絶対パスに変更したところ、2つのパスが異なるようです。

私の問題は、ファイルがサブディレクトリからロードされていることに起因しています。 Windowsサーバー上で私はrealpath()を使用しています。これは私に 'root'を与えてくれそうです。しかし、UNIXではこれが違うのですか?

UNIXの絶対パスをウィンドウに一致させる通常の方法は何ですか?

問題が見つかりました:原因はrequire()でした。

Windowsが '/' 接頭辞、そう

require '/ajax/test.php'がWindows上ではなく、UNIX上で有効である '余分' を許可するようです。

+0

まず最初に、Windowsはドライブレターを使用します。 * -grunt grumble- * – BoltClock

+4

まず最初に、テストサーバーはあなたのライブサーバーと同じ環境を持つ必要があります。 –

+3

@JamesMcNellisこれは、この人の質問に対する答え、またはその問題に対する解決策はどうですか? – toon81

答えて

0

問題が見つかりました:原因はrequire()です。窓が '/' そう

は「/ AJAX/test.php'`を必要とし、接頭辞余分を許可するようだ

は、Windows上で受け入れられますが、UNIXはエラーを返します。

+1

これはUnix上で有効です...それはあなたが思っていることだけではありません。 – BoltClock

4

liveとdevの異なる環境で作業していることを考慮して、アップロードフォルダを制限し、Windows環境とLinux環境の間に静的マップを作成することをお勧めします。

また、ちょうどあなたがこれを見ていない場合には、実パスについてPHP.netのマニュアルは非常に明確にLinuxとWindowsの違いを説明します。

http://php.net/manual/en/function.realpath.php

+2

+1 Windows上でUnixのようなパスをスマートに扱った 'realpath()'はわかりませんでした! – BoltClock

0

私が定義されていることを示唆しています/どこでもロードされる設定ファイルの静的変数。それは非常に信頼性の高いアプローチIMHOは簡単です。

関連する問題