4
if(file_exists("./squadra/photos/photog.jpg")) {
    echo "### YES ###";
} else {
    echo "### NO ###";
}

/zones/team.php でこの関数を実行すると、動作します (YES と表示されます)。/auth/ajax.php でこの関数を実行すると、NO が出力されます。なんで?

編集

だから私はいくつかの実験を行います。

1 - 私が試してみると:

// file on /zones/team.php
if(file_exists($_SERVER['DOCUMENT_ROOT']."/squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}

// file on /auth/ajax.php
if(file_exists($_SERVER['DOCUMENT_ROOT']."/squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}    

両方にNOと書かれています。

2 - 私が試してみると:

// file on /zones/team.php
if(file_exists("./squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}


// file on /auth/ajax.php
if(file_exists("../squadra/photos/provag.jpg")) {
    echo "YES";
} else {
    echo "NO";              
}

両方で YES と表示されます。しかし、team.php では ./ を使用し、ajax.php では ../ ...なぜこれが機能するのですか?

4

7 に答える 7

3

あなたの最後のものはおそらく次の理由で機能します:

  1. ルートにあるzones/team.phpから呼び出しています。index.phpこの場合./、part は現在のディレクトリを正しく識別します。
  2. そして ajax の場合、No.1 と同じauth/ajax.phpようなものではなく、 のように直接呼び出す必要があります。index.php?type=jx&do=auth/ajaxしたがって、これは当てはまりません。auth最初に を使用して終了し../、次に を使用する必要がありますsquadra/...

できるだけ頻繁に絶対パスを使用してください。相対パスは、PHP がそれらを計算するのに苦労します (パフォーマンスの観点から)。

于 2010-11-12T23:27:06.663 に答える
2

入力したフォルダを考慮していることを確認してください。サーバー側のルートである / でファイルアドレスを開始します。ローカル ディレクトリが必要な場合は、前の / を削除するか、パス全体を入力します。

第二に、タイプミスがないことを確認してください。

幸運を!

于 2010-11-12T21:43:08.913 に答える
2

スラッシュを取得すると、file_exist は HDD のルートに移動します。

その前に $_SERVER['DOCUMENT_ROOT'] を使用するか、スラッシュを削除して ../ などを使用します。

于 2010-11-12T21:44:01.180 に答える
1

quadra が PHP スクリプトが実行されているディレクトリの下のディレクトリである場合は、試してください。

if(file_exists('./squadra/photos/photog.jpg')) {
    echo "### YES ###";
} else {
    echo "### NO ###";
} 
于 2010-11-12T21:46:14.190 に答える
1

php safe_mode のステータスを確認し、ファイル パスの大文字と小文字の区別を確認します。

php file_exists

警告 : この関数は、セーフ モードの制限によりアクセスできないファイルに対して FALSE を返します。ただし、これらのファイルが safe_mode_include_dir にある場合は、引き続き含めることができます。

于 2010-11-12T21:48:35.703 に答える
0

file_exists で相対パスを使用すると、パスが php ディレクトリからの相対パスでない限り、false が返されます。

于 2010-11-12T21:44:19.347 に答える
0

パスを再度確認してください - 先頭のスラッシュは間違いだと思います - ルート (サーバーまたはユーザー空間の可能性が高い) を指している可能性があるため、実行中のスクリプトはサブパスにある可能性があります...

tl;dr; 最初の「/」を削除してみてください

于 2010-11-12T21:44:39.167 に答える