Edit report at https://bugs.php.net/bug.php?id=49625&edit=1
ID: 49625
Comment by: wim at asgc dot be
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:
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.
--
Previous Comments:
------------------------------------------------------------------------
[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...
------------------------------------------------------------------------
[2012-05-14 23:45:55] david at panmedia dot co dot nz
Please fix this
------------------------------------------------------------------------
[2011-09-05 01:32:08] blake dot soley at gmail dot com
I agree, this bug is not bogus. In fact, it's actually quite serious. Just
because spl_autoload was designed poorly doesn't mean it has to remain broken.
Several fixes have been proposed, please consider implementing one of them to
make this function cross-platform, and therefore useful.
------------------------------------------------------------------------
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