پیش به سوی تابستان؛ با تخفیفهای داغ راکت!
بزن بریم!دوستان سلام میخواستم این موضوع رو در میون بزارم با شما در مورد اتصال mysql به لاراول هستش من امروز توی کلاس به یه اروری که در ارور پایین مشاهده میکنید خوردم.
Illuminate\Database\QueryException
could not find driver (Connection: mysql, SQL: select table_name as `name`, (data_length + index_length) as `size`, table_comment as `comment`, engine as `engine`, table_collation as `collation` from information_schema.tables where table_schema = 'laravel_blog' and table_type = 'BASE TABLE' order by table_name)
at vendor\laravel\framework\src\Illuminate\Database\Connection.php:822
818▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
819▕ );
820▕ }
821▕
➜ 822▕ throw new QueryException(
823▕ $this->getName(), $query, $this->prepareBindings($bindings), $e
824▕ );
825▕ }
826▕ }
1 vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:65
PDOException::("could not find driver")
2 vendor\laravel\framework\src\Illuminate\Database\Connectors\Connector.php:65
PDO::__construct()
این خطا could not find driver به این معنیه که PHP نتونسته درایور PDO مورد نیاز برای اتصال به پایگاه داده MySQL رو پیدا کنه.
به زبان سادهتر، برنامهی شما (که از Laravel استفاده میکنه) میخواد به دیتابیس MySQL وصل بشه، اما PHP (زبانی که لاراول باهاش نوشته شده) ابزار لازم برای صحبت کردن با MySQL رو نداره.
دلایل اصلی این مشکل:
برای رفع این مشکل باید این مراحل رو انجام بدی:
فعال کردن ماژول pdo_mysql:
✔ فایل php.ini رو پیدا کن: مسیر این فایل بسته به سیستم عامل و نحوهی نصب PHP متفاوت هست. معمولاً در لینوکس ممکنه در مسیرهایی مثل /etc/php/7.x/cli/php.ini یا /etc/php/7.x/apache2/php.ini (به جای 7.x نسخه PHP رو قرار بده) باشه. در ویندوز هم معمولاً در پوشهی نصب PHP.
✔ خط extension=pdo_mysql رو پیدا و فعال کن: در فایل php.ini دنبال خطی بگرد که شبیه به این باشه:
;extension=pdo_mysql
علامت ; رو از ابتدای این خط بردار تا فعال بشه:
ini
extension=pdo_mysql
گاهی اوقات ممکنه به جای pdo_mysql، اسم فایل php_pdo_mysql.dll (در ویندوز) یا pdo_mysql.so (در لینوکس) باشه.
✔ ذخیره و ریستارت سرور وب: بعد از تغییر فایل php.ini، حتماً سرور وب (مثل Apache یا Nginx) رو ریستارت کن تا تغییرات اعمال بشن. اگر از PHP-FPM استفاده میکنی، اون رو هم ریستارت کن.
نصب ماژول pdo_mysql (اگر نصب نشده):
✔ در لینوکس (بر اساس توزیع):
✔ برای Debian/Ubuntu:
bash
sudo apt-get update
sudo apt-get install php-mysql
✔ برای CentOS/RHEL/Fedora:
bash
sudo yum install php-mysqlnd
یا
bash
sudo dnf install php-mysqlnd
بعد از نصب، حتماً سرور وب رو ریستارت کن.
✔ در ویندوز: معمولاً ماژولهای PHP در زمان نصب XAMPP/WAMP یا خود PHP نصب میشن. اگر اینطور نیست، باید مطمئن بشی که PHP رو به درستی نصب کردی و ماژولهاش در دسترس هستن.
بررسی PHP Info (برای اطمینان):
برای اینکه مطمئن بشی ماژول pdo_mysql فعال شده، میتونی یک فایل info.php بسازی و محتوای زیر رو داخلش بذاری:
<?php
phpinfo();
?>
این فایل رو توی روت پروژهی Laravel یا جایی که وب سرورت بهش دسترسی داره قرار بده و از طریق مرورگر بهش برو (مثلاً http://localhost/info.php). توی صفحهی phpinfo دنبال بخش PDO بگرد و مطمئن شو که pdo_mysql در اونجا لیست شده باشه.
🔑 نکته کلیدی که باید به اون توجه کنید اینه اگر روی سیستمتون 2 تا php داشته باشین هر کاری کنید برنامه تون اجرا نمیشه پس باید این php که روی environment سیستم شخصیتون هست باید اکستنژن های مورد نظر فعال بشه تا کار کنه من برای همین نزدیک به 1 ساعت وقتم طلف شد پس توجه کنید حتما.
برای اینکه مطمئن بشی ماژول pdo_mysql فعاله، این دستور رو توی ترمینال بزن:
php -m | grep pdo_mysql
یا اگر چند نسخه PHP نصب داری
حتماً بررسی کن که نسخهای از PHP که Laravel داره استفاده میکنه، همونیه که ماژول روش فعاله. مثلاً ممکنه php در CLI نسخه ۸ باشه ولی Apache از نسخه ۷.۴ استفاده کنه.
php -v
یه ریستارتم تو پروژه بزن شاید حل شد :)
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟