Laravel 5.5 "Class 'PDO' not found"

Stefan Bogdanescu

Founder & Senior Architect · 2026-06-29

Laravel Company

Solving the Dreaded "Class 'PDO' not found" Error in Laravel 5.5

As a senior developer, I’ve seen countless times how frustrating seemingly simple errors can be, especially when working within a complex framework like Laravel. The error message "Class 'PDO' not found" during execution is a classic symptom that points directly to an issue with PHP's ability to communicate with the underlying database system, specifically missing or improperly loaded PDO (PHP Data Objects) extensions.

If you are running this on a CentOS server, the issue often lies not within your Laravel code itself, but in the environment configuration of your PHP installation. Let’s dive deep into why this happens and how to resolve it correctly.

Understanding the Root Cause: Why is PDO Missing?

The PDO class is fundamental for database interaction in PHP. When Laravel attempts to execute any database migration or query (which happens during commands like migrate:refresh), it relies on the presence of this extension. If PHP cannot locate the necessary files, it throws this fatal error.

Even though you have confirmed that php -m lists pdo, the environment running your web server (like Apache or Nginx via PHP-FPM) might be using a different PHP binary or configuration than the one you are testing in the command line. This discrepancy is extremely common on Linux distributions like CentOS where multiple PHP versions can coexist.

Step-by-Step Troubleshooting Guide

Since standard cache clearing and composer commands didn't fix it, we need to focus squarely on the server environment setup. Follow these steps methodically:

1. Verify PHP Installation and Extensions

The first step is confirming exactly which PHP installation your web server is using and what extensions are active for that specific instance.

Run the following command to check the configuration files:

bash
php -i | grep 'pdo'

If this command returns nothing, or points to an incorrect path, it confirms the environment issue.

2. Check PHP Module Configuration (CentOS Specific)

On CentOS systems, especially if you installed PHP via EPEL or compiled from source, extensions might be missing or disabled for the specific module being used by your web server. You need to ensure the required modules are enabled in your php.ini file.

Locate your active php.ini file (often found in /etc/php.ini or within your FPM configuration directory) and manually check the extension loading lines. Ensure that lines referencing PDO are uncommented:

ini
; Example of what you are looking for in php.ini
extension=pdo
extension=pdo_mysql  ; Or pdo_pgsql, etc., depending on your database driver

If you find missing extensions, you might need to re-install the relevant PHP package or manually enable the module using php -m output as a guide. This careful environment management is crucial when setting up robust applications, as emphasized by best practices in modern Laravel development found on laravelcompany.com.

3. Reinstalling Dependencies (The Composer Check)

Although you ran composer install, sometimes forcing a clean re-installation of the dependencies helps resolve path issues, especially if the core library files were corrupted or missed during the initial setup. Try running these commands again to ensure everything is freshly compiled:

bash
composer clearcache
composer dump-autoload
# If you are using a specific environment setup, try reinstalling the PHP extensions via your package manager (e.g., yum/dnf) if available for that version.

Conclusion

The "Class 'PDO' not found" error is rarely an issue with Laravel's code logic; it is almost always an infrastructure problem related to how PHP is configured on the server. By systematically checking your PHP modules, verifying the correct php.ini file, and ensuring proper dependency resolution via Composer, you will resolve this conflict. Remember that setting up a stable environment is the foundation upon which all successful Laravel applications are built. Keep focusing on these foundational steps for reliable development.