In case someone else end up here... what I think I have figured out this far (Windows only): In php.ini [sqlite3] section set sqlite3.extension_dir to EXACTLY what windows reports as the full path to the extension directory, eg, if extension_dir is set to "ext", ie. the default, then: [sqlite3] sqlite3.extension_dir=C:\DL\PHP\5.6.40\ext\ I then renamed the custom virtual table dll to it's init procedure name as SQLite can pick it up from the nname, for example: Ren custom_vt.dll to initprocname.dll PHP/SQLite will then try to load it and use "sqlite3_initprocname_init" as init procedure, however I now receive Warning: SQLite3::loadExtension(): The specified procedure could not be found. in C:\DL\PHP\DocRoot\LPKQTests.php on line 42 But from the source I can see that it must have came up to the point of loading the custom extension dll...