0

データベーステーブルに行があり、ディレクトリで同期されていない行があります。

元。私のテーブルに

image.png

しかし、私のディレクトリには

image.PNG

今、私はチェックするのに問題があります

file_exist

大文字と小文字の区別のため。データベースとディレクトリ上のファイルが多すぎるため、手動で同期するオプションを選択できません。

ファイルタイプの機密性を無視するfile_existをどのように使用できますか?

4

3 に答える 3

4

より一般的な解決策については、phpドキュメントのコメントを参照してください。

一般的な解決策

このバージョンの関数を提供するもの:

/**
 * Alternative to file_exists() that will also return true if a file exists
 * with the same name in a different case.
 * eg. say there exists a file /path/product.class.php
 *  file_exists('/path/Product.class.php')
 *   => false
 *  similar_file_exists('/path/Product.class.php')
 *   => true
 */
function similar_file_exists($filename) {
  if (file_exists($filename)) {
    return true;
  }
  $dir = dirname($filename);
  $files = glob($dir . '/*');
  $lcaseFilename = strtolower($filename);
  foreach($files as $file) {
    if (strtolower($file) == $lcaseFilename) {
      return true;
    }
  }
  return false;
}
于 2013-01-07T08:54:07.223 に答える
2

両方の拡張子をチェックする関数を作成し、file_exist を直接使用する代わりにそれを使用します。

于 2013-01-07T08:52:02.453 に答える
1

私が思うに、あなたの根本的な原因は次のとおりです-
データベースに「image.png」があり、ディレクトリに「image.PNG」がある場合は、挿入クエリに問題があることを意味します。
それは両方の場所で同じでなければなりません。Linuxシステムでは大文字と小文字が区別されるため、ファイル名は小文字で保存することをお勧めします。

于 2013-01-07T08:54:57.073 に答える