Проблема с PHP связана с файловыми системами с учетом регистра

Я создал PHP-проект в Windows, и, как вы знаете, в Windows fun.php и Fun.php такие же, но не в Linux.
Q1-> Как мой проект будет запущен в Linux. Как решить эту проблему [ошибка для имени файла]?
Q2-> Мне нужно показать ошибку, если точное имя файла не существует! Как это сделать?

пример

У меня есть этот 2 PHP-файл в template.php и render.php
Код render.php

 include 'Template.php'; 

Я хочу получить предупреждение, поэтому я могу исправить эту проблему [которая не создает проблем в Windows, а в Linux]

Решение № 1: используйте все строчные буквы. Решение №2: Используйте один и тот же случай каждый раз. Вместо того, чтобы включать «Шаблон», когда имя файла является «шаблоном», просто включите строчный «шаблон» в первую очередь. Большинство языков программирования в любом случае чувствительны к регистру, поэтому лучше всего практиковать. Хотя имя файла может быть уникальным в этом вопросе, например, переменная в PHP должна использовать один и тот же случай, поэтому просто применяйте те же принципы к именам файлов.

Ну, если бы я был в такой ситуации, я бы написал обертку вокруг:

 function warned_include($file) { if( defined( 'DEBUG_ENV' ) ) // define this somewhere else while in dev. { foreach( explode( PATH_SEPARATOR, get_include_path() ) as $path ) { // make sure the / is replaced with the OS native DIRECTORY_SEPARATOR $fullPath = str_replace($path .DIRECTORY_SEPARATOR.$file, '/', DIRECTORY_SEPARATOR); if( is_file( $fullPath ) ) { $spl = new SplFileInfo( $fullPath ); if( $spl->getPathname() != $fullPath ) { echo 'case sensitivity mismatch for ' . $spl->getPathname(); } break; } } } include $file; } 

У меня не было возможности проверить это, но SplFileInfo получает имя пути из ОС, а это значит, что в Windows это должно иметь правильную чувствительность к регистру.

У вас есть «ярлык» в окнах, где вы вызываете Template файла, пока он фактически является template . Если вы просто перейдете кодовым кодом и не допустите этого, все будет в порядке?

  • Убедитесь, что все ваши имена файлов в одном случае или используют один стандарт (если у вас есть только «базовые» страницы, я бы пошел со строчными буквами. Но иногда в больших проектах у вас будет стандарт, который говорит, что классы идут с капиталом например ClassName.php)
  • убедитесь, что ваши звонки используют это фактическое имя.
  • прибыль.

Если по какой-то причине вы этого не хотите, вы всегда можете использовать автозагрузчик для классов. Каждый класс, который вызывается, загрузит этот класс, если он не сможет найти себя. это, очевидно, будет не идеальным для ситуаций, когда вы хотите включить материал, который не находится в классах.

Может быть, вы должны заменить все включенные с требованием. Требовать, чтобы произошла фатальная ошибка, если такого файла нет (не в надлежащем случае)

Вы можете найти это полезным. – http://clarityamidstchaos.wordpress.com/2008/10/24/how-to-perform-a-case-insensitive-file_exists-lookup-in-phplinux/