5

file_exists() が常に false を返す場合があります。私の最新の試みは、 $_SERVER["SCRIPT_FILENAME"] に対して true を返すかどうかをテストし、ファイルが見つからない場合はパスの値を返すことでした。

問題の解決に必ずしも関連するわけではありませんが、パスは次のとおりです。 /Users/joe/Workspace/720/app/webroot/index.php

私は明らかにファイルがそこにあることを確認しました.phpがそれを提供しているので、どうしてそこになかったのかさえわかりません.

これは、PHP 5.3.0 を実行している OS X Snow Leopard のインストールにあることに注意してください。

どんなアイデアも素晴らしいでしょう。

コードサンプル:

if (!file_exists($_SERVER["SCRIPT_FILENAME"]))
    $errors[] = 'Cant find:'. $_SERVER["SCRIPT_FILENAME"];
4

7 に答える 7

8

この問題が発生したばかりで、過去数時間問題が発生しました。答えは、file_exists() が機能するために ABSOULTE パスを指定する必要があるということです。「dir1/images/image.jpg」や「../../images/image1.jpg」などの相対パスは使用できません。「/rootdir/subdir/dir1/images/myimage.jpg」を指定する必要があります。

とにかくそれが私のために働いたのです。

于 2010-04-02T07:56:52.267 に答える
3

おそらくファイルのパーミッションの問題です。テスト対象のファイルが_wwwユーザー (Mac OS X で apache {httpd} を実行するために使用されるユーザー) によってアクセス可能であることを確認してください。

アクセス許可ビットとして 777 を使用して /tmp 上のファイルをテストしてみてください。

それが役に立てば幸い。

于 2009-11-25T20:03:02.163 に答える
1

上のphpマニュアルからfile_exists()

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

これは推測にすぎません。コード サンプルを使用すると、より明確になる場合があります。

file_exists()ファイルにアクセスできない別の理由が考えられます (セーフ モード関連ではありません)。

注: チェックは、有効な UID/GID ではなく、実際の UID/GID を使用して行われます。

このスクリプトは、私の Linux ボックスで問題なく動作します (これは、あなたが追加したほとんどの例です)。

<?php
  if (file_exists($_SERVER["SCRIPT_FILENAME"])){
    echo "Found File: ";
  } else {
    echo "No File: ";
  }

  echo $_SERVER["SCRIPT_FILENAME"];
?>
于 2009-11-25T20:04:57.000 に答える
1

また、親ディレクトリとそのすべての親をチェックして、全員が実行アクセス権を持っていることを確認します。

これを (コマンド ラインではなく) Apache で実行している場合は、Snow Leopardの_wwwユーザーとグループで実行されることに注意してください。_wwwこれがアクセスが必要なグループです。

于 2009-11-25T20:57:42.603 に答える
0

これは役立つかもしれません:http:
//bugs.php.net/bug.php?id = 48535

具体的には:

php.iniの設定fastcgi.impersonateを1に設定しました(ドキュメントの推奨事項のように)。0に設定すると機能します。

于 2009-11-25T20:48:47.647 に答える
0

この方法を使用するfile_exists($_SERVER['DOCUMENT_ROOT']."/path/to/file")と、php が絶対パスを提供します。

于 2012-07-21T18:54:52.063 に答える
-1

セーフモード?

PHP file_exists ドキュメントから:

警告


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

于 2009-11-25T20:05:15.530 に答える