データベーステーブルに行があり、ディレクトリで同期されていない行があります。
元。私のテーブルに
image.png
しかし、私のディレクトリには
image.PNG
今、私はチェックするのに問題があります
file_exist
大文字と小文字の区別のため。データベースとディレクトリ上のファイルが多すぎるため、手動で同期するオプションを選択できません。
ファイルタイプの機密性を無視するfile_existをどのように使用できますか?
データベーステーブルに行があり、ディレクトリで同期されていない行があります。
元。私のテーブルに
image.png
しかし、私のディレクトリには
image.PNG
今、私はチェックするのに問題があります
file_exist
大文字と小文字の区別のため。データベースとディレクトリ上のファイルが多すぎるため、手動で同期するオプションを選択できません。
ファイルタイプの機密性を無視するfile_existをどのように使用できますか?
より一般的な解決策については、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;
}
両方の拡張子をチェックする関数を作成し、file_exist を直接使用する代わりにそれを使用します。
私が思うに、あなたの根本的な原因は次のとおりです-
データベースに「image.png」があり、ディレクトリに「image.PNG」がある場合は、挿入クエリに問題があることを意味します。
それは両方の場所で同じでなければなりません。Linuxシステムでは大文字と小文字が区別されるため、ファイル名は小文字で保存することをお勧めします。