php
autoloading
ai_generated
true
Warning: spl_autoload_register(): Argument #1 ($callback) must be a valid callback, function 'my_autoloader' not found or invalid function name
ID: php/spl-autoload-error
88%Fix Rate
90%Confidence
45Evidence
2023-01-01First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 83 | active | — | — | — |
Root Cause
SPL autoload errors occur when a custom autoloader function registered via spl_autoload_register() is invalid, conflicts with Composer's autoloader, or fails to locate class files. This is common in legacy applications migrating to Composer-based autoloading.
genericWorkarounds
-
92% success Use Composer's autoloader and register custom autoloaders after it
Require Composer's autoloader first: require __DIR__ . '/vendor/autoload.php'. Then register any custom autoloaders with spl_autoload_register() and set the prepend parameter to false so they run after Composer's loader.
-
88% success Migrate legacy autoloading to Composer's PSR-4 or classmap autoloading
Add legacy class directories to composer.json classmap: {"autoload": {"classmap": ["legacy/classes/"]}} and run 'composer dump-autoload'. This generates a complete class-to-file map without requiring PSR-4 compliant naming.
Dead Ends
Common approaches that don't work:
-
Registering multiple conflicting autoloaders that try to include the same files
70% fail
Multiple autoloaders can cause 'cannot redeclare class' errors or include incorrect files. The autoloader stack order matters, and conflicting loaders create non-deterministic behavior.
-
Using __autoload() function instead of spl_autoload_register()
90% fail
__autoload() was removed in PHP 8.0. It only supported a single autoloader function and could not be chained with other autoloaders like Composer's.
Error Chain
Leads to:
Preceded by:
Frequently confused with: