Edit report at https://bugs.php.net/bug.php?id=49625&edit=1
ID: 49625 Comment by: james at jamestandy dot com Reported by: jo at feuersee dot de Summary: spl_autoload and case sensitivity Status: Not a bug Type: Bug Package: SPL related Operating System: Linux PHP Version: 5.3.0 Block user comment: N Private report: N New Comment: Also add my support to FIX THIS BUG!!! Just tried adding the Ebay Trading API to my existing site, which is using spl_autoload. Because the ebay team (like it seems every other sensible dev on the entire planet) uses CamelCased filenames, I now have 3 choices: 1: Do not use spl_autoload (Not an option because this would break our existing site). 2: Do not use the Ebay Trading API, or write my own implementation of this from scratch. (Also not an option for obvious reasons). 3: Rename over 1000 files, and replace every CamelCase instance in each and every file with lower case names. 3 is looking to be my only option, which of course would need repeating each and every time Ebay update their API, so is really NOT a viable option. Previous Comments: ------------------------------------------------------------------------ [2013-01-30 09:41:30] jurchiks101 at gmail dot com Bumping this bug, at least add a boolean parameter to it for case-sensitivity. This should be literally a 5-minute job for the devs, why has nobody fixed it for 3 years and counting? Have you no shame? ------------------------------------------------------------------------ [2013-01-09 10:00:35] wim at asgc dot be Since I have an extensive codebase relying on classes defined with uppercase starting letter and I saw the 'tip' in the documentation (see below) , I wanted to switch. To my surprise I bumped into this issue with spl_autoload_register (needless to say that it works on a Windows box as a charm and breaks terribly on a Linux box). It definitely is a bug which should be mentioned clearly in the documentation. In addition I would strongly suggest the __autoload function will not be deprecated until this is fixed. -- >From the documentation : Tip spl_autoload_register() provides a more flexible alternative for autoloading classes. For this reason, using __autoload() is discouraged and may be deprecated or removed in the future. -- ------------------------------------------------------------------------ [2012-12-17 16:01:57] admin at tandyukservers dot co dot uk Status: Not a bug Bullshit. IS A BUG. When will this be recognised as such by you php devs and added to the list of bugs to be fixed! ------------------------------------------------------------------------ [2012-06-15 19:59:25] jdornan at stanford dot edu This seems like a 20 min fix to me, and I've never looked the sql_autoload code before. I spent a good deal of time spinning my wheels on this. I don't see why anyone should lose time of this very obvious bug. However it's better to patch that to bitch, as I always say. I'll submit my patch and see what happens. It's not big deal if this is not fixed, since it's so easy to fix I can keep fixing it with each release. Here is a diff, I'll submit the patch with the "Add a Patch" link. 225d224 < char *lc_class_file; 227d225 < int lc_class_file_len; 229d226 < int mixed_case = 0; 235,236c232 < lc_class_file_len = spprintf(&lc_class_file, 0, "%s%s", lc_name, file_extension); < class_file_len = spprintf(&class_file, 0, "%s%s", class_name, file_extension); --- > class_file_len = spprintf(&class_file, 0, "%s%s", lc_name, file_extension); 252,261c248 < mixed_case = 1; < } < < /* fall back to lowercase file name. should issue deprecated warning. */ < if (ret != SUCCESS) { < ret = php_stream_open_for_zend_ex(lc_class_file, &file_handle, ENFORCE_SAFE_MODE|USE_PATH|STREAM_OPEN_FOR_INCLUDE TSRMLS_CC); < } < < if (ret == SUCCESS) { < if (!file_handle.opened_path && mixed_case == 1) { --- > if (!file_handle.opened_path) { 263,264d249 < } else if(!file_handle.opened_path && mixed_case == 0) { < file_handle.opened_path = estrndup(lc_class_file, lc_class_file_len); 290d274 < efree(lc_class_file); 295d278 < efree(lc_class_file); 331d313 < PS: I really hate this bug with a passion. ------------------------------------------------------------------------ [2012-06-01 23:10:39] mrex at interport dot net After having lost 2 days over this, I agree, this should be fixed. At the very least, it should be documented that spl_autoload lower cases filenames. I spent hours trying to register an autoload class that would fix this, but in vain. How can I know that "dataloader" should be mapped to "DataLoader"? If it had been documented that filenames were lowercased, I would not have spent hours banging my head against a brick wall... ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at https://bugs.php.net/bug.php?id=49625 -- Edit this bug report at https://bugs.php.net/bug.php?id=49625&edit=1