“Unable to load dynamic library pdo_firebird” can mean the extension DLL exists but one of its dependencies cannot be loaded. On Windows, PHP, the web-server process, the extension, and fbclient.dll must use compatible architecture and runtime builds.
Last updated: November 2, 2026.
php --ini
php -i | findstr /I "Architecture Thread Safety extension_dir"
php -m | findstr /I "PDO pdo_firebird"
where php.exe
where fbclient.dllRun the CLI checks first, then compare them with a temporary phpinfo() page served by Apache. CLI and Apache may load different PHP binaries and different php.ini files.
Match the complete Windows stack
The official PHP Windows downloads distinguish x64 from x86 and Thread Safe from Non Thread Safe builds. Apache module deployments require a compatible Thread Safe PHP build. A 32-bit Apache process cannot load a 64-bit PHP module or database client.
PHP’s PDO_FIREBIRD documentation states that PHP 8.4 and later use Firebird C++ APIs and must be built against fbclient 3.0 or newer. An older Firebird 2.5 client DLL is therefore not a suitable dependency for a current extension build.
Load the intended extension and dependency
Confirm that extension_dir points to the folder containing php_pdo_firebird.dll, enable the extension once, and restart Apache. Check the Windows Event Log or Apache error log for the exact missing-module message. “The specified module could not be found” often refers to a dependent DLL, not the extension named in php.ini.
Install the Visual C++ runtime required by the selected PHP build and inspect the extension’s dependent DLLs when the log remains vague. Check the process environment rather than only your interactive command prompt because a Windows service may use a different PATH.
Prefer one supported x64 stack and place the correct Firebird client where the web-server process can resolve it. Do not scatter different fbclient.dll versions through PHP, Apache, and Windows system directories. Remove stale copies from search paths after backing them up. Verify with PDO::getAvailableDrivers() before testing the application.
Continue with configuring PHP on Windows, reading PDO errors, and using ODBC connections.