In a case-insensitive file system, the require_once language construct will point to the same file regardless of any capitalization in the path. However, and this is the catch, although the different capitalization variants point to the same file, they are not treated as the same file when the check is made to determine if the file has already been included.
require_once __DIR__.'/address/src/Coordinates.php';
require_once __DIR__.'/Address/src/Coordinates.php';
In the above example, in a case-insensitive file system, both lines will attempt to require the same file. The second file will succeed because there is difference in the capitalization of the path.
This gets worse if you have further require_once language constructs in the required files, i.e. you are doing multilevel requires, combined with relative paths. In such a scenario, the nested relative path will be resolved to a full path using the capitalization used in higher level requires. If anywhere in this nested structure you use a different capitalization, you will encounter the same problem.
var_dump(get_included_files());
This will give you a list of included files with their full paths and exact capitalization you used. This will help you find the colprit quickly.