PDOException“ ไม่พบไดรเวอร์”


292

ผมได้ติดตั้งเพียง Debian Lenny กับ Apache, MySQL และ PHP และฉันได้รับ could not find driverPDOException

นี่เป็นบรรทัดรหัสเฉพาะที่อ้างถึง:

$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USER, DB_PASS)

DB_HOST, DB_NAME, DB_USERและDB_PASSมีค่าคงที่ที่ผมได้กำหนดไว้ ทำงานได้ดีบนเซิร์ฟเวอร์ที่ใช้งานจริง (และในการตั้งค่าเซิร์ฟเวอร์ Ubuntu ก่อนหน้าของฉัน)

สิ่งนี้เกี่ยวข้องกับการติดตั้ง PHP ของฉันหรือไม่?

การค้นหาอินเทอร์เน็ตไม่ได้ช่วยอะไรทั้งหมดที่ฉันได้รับคือการแลกเปลี่ยนผู้เชี่ยวชาญและตัวอย่าง แต่ไม่มีวิธีแก้ปัญหา


21
ดูในphp.ini' file and uncomment ส่วนขยายของคุณ= . The path to your ไฟล์ php_pdo_mysql.dll ไฟล์ php.ini` โดยดูจาก phpinfo ของคุณ ()
สไตล์

3
หากคุณได้รับข้อผิดพลาดนี้และ GoDaddy เป็นโฮสต์ของคุณโปรดลงชื่อเข้าใช้บัญชีผู้ดูแลระบบของคุณ รายละเอียดการโฮสต์ -> ภาษาการเขียนโปรแกรม อัปเกรดเวอร์ชัน PHP ของคุณเป็นเวอร์ชันล่าสุดหรืออย่างน้อย 5.4
Joe

@ Joe ฉันอัพเกรดแล้วแต่ยังได้รับข้อผิดพลาด (GoDaddy)
Eugen Sunic

@styfle 1up บนเครื่อง Linux ฉันตั้งextension=msql.soและใช้งานได้!
AjayKumarBasuthkar

ซึ่งมันอาจกังวล: ถ้าคุณกำลังใช้ PHP 7.1+ ในนักเทียบท่าคุณสามารถลงในภาชนะและเรียกใช้docker exec docker-php-ext-install pdo pdo_mysql
cleybertandre

คำตอบ:


240

คุณต้องมีโมดูลที่เรียกว่า pdo_mysql กำลังค้นหาใน phpinfo ()

pdo_mysql

PDO Driver for MySQL, client library version => 5.1.44

2
@ZZ Coder ไม่มีใน phpinfo () คุณรู้pdo_mysqlหรือไม่ว่าฉันจะติดตั้งได้อย่างไร
Mike Moore

14
@letseatfood ... คุณคิดยังไง ฉันมีปัญหาเดียวกัน!
Hristo

17
ฉันสามารถแนะนำแพ็คเกจ Ubuntu "php5-mysql" สำหรับการติดตั้งการสนับสนุน PDO สำหรับ MySQL
Tom Carver

3
โปรดทราบว่าสำหรับผู้ที่ใช้ Apache หรือเว็บเซิร์ฟเวอร์อื่น ๆ เราต้องรีสตาร์ท Apache เพื่อให้การเปลี่ยนแปลงมีผล:sudo systemctl restart httpd.service
Mugoma J. Okomba

50
สำหรับ Ubuntu 16.04 และ PHP7 ใช้sudo apt-get install php-mysql
Ivan Marjanovic

199

dsn ในรหัสของคุณแสดงว่าคุณกำลังพยายามเชื่อมต่อกับไดรเวอร์ mysql ข้อความแสดงข้อผิดพลาดของคุณระบุว่าไดรเวอร์นี้ไม่สามารถใช้งานได้

ตรวจสอบว่าคุณมีนามสกุล mysql ติดตั้งอยู่บนเซิร์ฟเวอร์ของคุณ

ใน Ubuntu / Debian คุณตรวจสอบแพ็คเกจด้วย:

dpkg --get-selections | grep php | grep mysql

ติดตั้งแพ็คเกจ php5-mysql หากคุณยังไม่มี

ใน Ubuntu / Debian คุณสามารถใช้:

  • PHP5: sudo apt-get install php5-mysql
  • PHP7: sudo apt-get install php7.0-mysql

สุดท้ายนี้เพื่อให้มันใช้งานได้คุณจะต้องรีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ:

  • Apache: sudo /etc/init.d/apache2 restart
  • Nginx: sudo /etc/init.d/nginx restart

3
อ่า ... การเริ่มต้นใหม่เป็นสิ่งที่ฉัน!
KOGI

ฉันมีปัญหาเดียวกันตรวจสอบให้แน่ใจว่าคุณรีสตาร์ท php5-fpm!
Eko3alpha

ใช้เวลาเกือบทั้งคืนพยายามที่จะถอดรหัสนี้จนกว่าฉันจะเห็นคำตอบของคุณ ทำทุกอย่างถูกต้องแล้ว แต่ลืมรีสตาร์ท apache
Mugoma J. Okomba

php-mysql เป็นรุ่นใหม่ล่าสุดแล้ว (1: 7.1 + 49 + deb.sury.org ~ xenial + 4) เมื่อพยายามเรียกใช้คำสั่ง sudo apt-get install php-mysql ใน ubuntu 16.04 ด้วย nginx php fpm ฉันยังรีสตาร์ท php fpm แล้วรีสตาร์ท nginx
Prashant Barve

ปัจจุบันดูเหมือนจะเป็น php-mysql และ php7.1-mysql หวังว่านี่เป็นรูปแบบที่ก้าวไปข้างหน้า
John P

83

อัพเดท : รุ่นใหม่ควรใช้แพคเกจแทนphp-sqlite3 php5-sqliteดังนั้นให้ใช้สิ่งนี้หากคุณใช้ Ubuntu รุ่นล่าสุด:

sudo apt-get install sqlite php-sqlite3

คำตอบสำหรับคำถามดั้งเดิมอยู่ที่นี่:

sudo apt-get install sqlite php5-sqlite
sudo /etc/init.d/apache2 restart

หาก phpinfo () ของคุณไม่แสดงบรรทัด pdo_sqlite (ในกรณีของฉันบน Ubuntu Server ของฉัน) คุณเพียงแค่เรียกใช้บรรทัดข้างต้นแล้วคุณก็จะดี


57
ทำไมคุณถึงให้คำแนะนำสำหรับ sqlite เมื่อ OP ใช้ MySQL?
Andrew Ensley

7
@ แอนดรูว์ถ้าคุณใช้pdo_sqliteและไม่ได้ติดตั้งphp5-sqliteคุณจะได้รับเพียงPDOExceptionข้อมูลเกี่ยวกับ sqlite ที่หายไปและลองติดตั้งphp5-mysqlสองครั้ง
Aitch

2
โปรดทราบว่า php5-sqlite ล้าสมัยและอาจไม่สามารถใช้กับระบบของคุณได้อีกต่อไปเช่น Ubuntu 16.04 ติดตั้ง php-sqlite3 แทน
Matthias

2
@ Briankip แน่นอนว่าถ้าคุณพยายามเชื่อมต่อกับ SQLite และไดรเวอร์นั้นหายไป แต่ OP พยายามเชื่อมต่อกับ MySQL การติดตั้ง sqlite / ไม่สามารถแก้ปัญหาของเขาได้
Andrew Ensley

2
@AndrewEnsley ชื่อของหน้านี้เป็นข้อผิดพลาดที่ทุกคนได้รับโดยไม่คำนึงถึงแพลตฟอร์ม db ของพวกเขา ดังนั้นหน้านี้มีอันดับการค้นหา google สูงสุดหากคุณ google เพียงข้อผิดพลาด ดังนั้น IMO คำตอบสำหรับคำถามนี้ที่เกี่ยวข้องกับฐานข้อมูลอื่น ๆ ควรได้รับการต้อนรับที่นี่ หากพวกเขาไม่ทำงานให้กับ OP ดังนั้นไม่ว่าจะเป็น ... OP ไม่จำเป็นต้องยอมรับคำตอบเหล่านั้น นั่นไม่ได้หมายความว่าคำตอบนี้จะไม่ "มีประโยชน์" สำหรับคนอื่นที่ตรวจสอบข้อความแสดงข้อผิดพลาดในชื่อที่มอบให้กับคำถามนี้ด้วยอันดับการค้นหาของ Zoltar +1
elrobis

34

สำหรับ Ubuntu รุ่นใหม่กว่าที่มี PHP 7.0 คุณสามารถรับphp-mysqlแพ็คเกจได้:

sudo apt-get install php-mysql

จากนั้นรีสตาร์ทเซิร์ฟเวอร์ของคุณ:

sudo service apache2 restart

ฉันคิดว่าทุกวันนี้คุณต้องมีความเฉพาะเจาะจงกับเวอร์ชั่น sudo apt-get install php7.2-mysql
Stan Sokolov

25

ฉันมีปัญหาเดียวกัน การแก้ปัญหาขึ้นอยู่กับระบบปฏิบัติการ ในกรณีของฉันฉันมีเดเบียนดังนั้นเพื่อแก้ปัญหา:

  • อัปเดตเวอร์ชัน php ของฉันจาก ( php5 เป็น php7 )
  • ติดตั้ง php-mysql และ php7.0-mysql

    apt-get install php-mysql
    apt-get install php7.0-mysql
  • ฉันแก้ไขphp.iniตำแหน่งของฉันที่ /etc/php/7.0/apache2/php.ini

    uncomment the line : extension=php_pdo_mysql.dll
  • จากนั้นรีสตาร์ท apache:

    service apache2 restart

นี่เป็นการแก้ปัญหาของฉัน


เช่นกันสำหรับผู้ที่อย่างผมที่พบนี้ไม่ได้ค่อนข้างพอเพียงและไม่ต้องการที่จะไปผ่านขั้นตอนที่จะสมบูรณ์ลบ php5 ก่อนที่จะยืนยัน php7 ที่จะทำงาน: a2dismod php5, a2enmod php7.0และservice apache2 restartในที่สุดก็มีฉันกลับมาทำงาน
depwl9992

21

บนเครื่อง Windows ของฉันฉันต้องให้เส้นทางที่แน่นอนไปยังส่วนขยาย dir ใน php.ini ของฉัน:

extension_dir = "c:\php5\ext"


2
ฉันเพิ่งยืนยันว่าเรื่องนี้เป็นจริง (Win2008) Strange - ส่วนขยายอื่น ๆ ใช้งานได้กับเฉพาะที่แนะนำextension_dir = "ext"แต่ไม่ใช่ส่วนขยายนี้
scipilot

กันที่นี่ เพิ่มเส้นทางและเริ่มทำงาน Windows10, php7.1
Chris Gibb

14

บน Ubuntu เพียงดำเนินการ

sudo apt-get install php5-mysql

1
ฉันอยู่หลัง Symfony2 และ Ubuntu ไม่พบ Pdo_mysql ([PDOException] ไม่พบไดรเวอร์) วิธีนี้แก้ไขปัญหาได้
เพิ่มอีก

2
สำหรับฉันฉันขาด Postgresql ดังนั้นจึงเป็น:sudo apt-get install php5-pgsql
Kzqai

@Kzqai 2:30 น. ตอนนี้และคุณเพิ่งแก้ไขปัญหาของฉันฉันไม่ได้ใช้ mysql ฉันใช้ postgres (> l)
Dheeraj

9
sudo apt-get install php-mysql 

ทำงานได้ดีบน Ubuntu และ PHP 7


มันใช้งานได้สำหรับฉันแม้ว่าฉันจะไม่ได้ใช้ php7 แต่ php5.6 แต่ฉันมี 7 ติดตั้ง ฉันติดตั้ง 5.6 ในภายหลังและเปลี่ยนเป็นโดยไม่ถอนการติดตั้ง php7
Mubashar Abbas

9

ตรวจสอบว่าโมดูลพร้อมใช้งานด้วยphp -m | grep pdo_mysqlหรือไม่

ถ้าไม่ใช่สำหรับ PHP 7.2 คุณสามารถติดตั้งแพ็คเกจที่เกี่ยวข้องได้ sudo apt install php7.2-mysqlได้

ใช้คำสั่งที่คล้ายกันในเวอร์ชัน PHP และแพ็คเกจผู้จัดการอื่น ๆ


6

เมื่อเพิ่มสิ่งเหล่านี้ลงใน php.ini ของคุณให้แน่ใจว่าการอ้างอิง php_pdo.dll เป็นครั้งแรกก่อนที่ไดรเวอร์ db จะเป็นอย่างอื่นซึ่งจะทำให้เกิดข้อความแสดงข้อผิดพลาดนี้เช่นกัน เพิ่มพวกเขาเช่นนี้:

[PHP_PDO]
extension=php_pdo.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll

2
เนื่องจาก PHP v5.3 php_pdo.dllไม่จำเป็นต้องใช้โมดูล (ไม่มีอยู่) อีกต่อไป php.net/manual/en/pdo.installation.phpน่าจะเป็นคำตอบสุดท้ายสำหรับคำถามนี้
Martin Zeitler

5

คุณตรวจสอบ php.ini ของคุณ (ตรวจสอบตำแหน่งที่ถูกต้องด้วย phpinfo ()) ถ้า MySQL และไดรเวอร์ถูกติดตั้งอย่างถูกต้องหรือไม่?


2
ฉันกำลังมองหาใน php.ini แต่สิ่งที่ฉันควรจะมองหา? ฉันเห็นหัวข้อที่เริ่มต้นด้วย[MySQL]
Mike Moore

4

สำหรับPHP 5.5วันที่CentOSฉันแก้ไขสิ่งนี้โดยการติดตั้งphp55-mysqlndแพคเกจ

sudo yum -y install php55w-mysqlnd # For Webtatic
sudo yum -y install php55u-mysqlnd # For Remi

สำหรับความช่วยเหลือในการติดตั้งเขียนความคิดเห็นตามที่ติดตั้ง PHP ในระบบของคุณ ที่มีอยู่ของ repo เป็นและwebtaticremi


4

สำหรับ Windows 8.1 / 10 ใน: \\ php.ini ไฟล์คุณควรยกเลิกการใส่เครื่องหมายบรรทัด "extension = pdo_mysql"


3

ในกรณีของฉันสตริง DSN ของฉันไม่ถูกต้องโดยเฉพาะมันไม่ได้มี mysql://. ฉันคาดว่าจะมีข้อความแสดงข้อผิดพลาดที่แตกต่างกันบางทีบางอย่างเช่น 'สตริง DSN ไม่ได้ระบุไดรเวอร์ / โปรโตคอล'

การเพิ่มmysql://ไปยังจุดเริ่มต้นของสตริง DSN สามารถแก้ไขปัญหาได้


3

ฉันใช้เวลาในวันสุดท้ายพยายามหาสาเหตุที่ทำให้เกิดข้อผิดพลาดดังต่อไปนี้ ฉันใช้ Ubuntu 14.04

ปัญหา:
ฉันสังเกตเห็นว่ารุ่น PHP-CLI ของฉันใช้งาน php7.0 แต่ php_info () (เวอร์ชั่นบนเว็บ) แสดงผลเป็น php 5.5.9 แม้ว่า php_info () กล่าวว่า pdo เปิดใช้งานอยู่การใช้บรรทัดคำสั่ง (CLI) ไม่ได้จดจำคำสั่ง pdo_mysql ปรากฎว่า mysql เปิดใช้งานสำหรับรุ่นเก่าของฉัน แต่ไม่ใช่รุ่น CLI ทั้งหมดที่ฉันทำคือติดตั้ง mysql สำหรับ php7.0 และสามารถใช้งานได้

นี่คือสิ่งที่ทำงาน:

วิธีตรวจสอบเวอร์ชั่น:

php -v

ในการติดตั้ง mysql สำหรับ php7.0

sudo apt-get install php7.0-mysql

1) ตรวจสอบว่าเวอร์ชัน CLI ของคุณเหมือนกับเวอร์ชันเว็บของคุณ
2) หากแตกต่างกันตรวจสอบว่าเวอร์ชัน CLI ของคุณมีปลั๊กอิน mysql เนื่องจากไม่ได้มาพร้อมกับค่าเริ่มต้น


2

ตรวจสอบว่า extension_dir ในไฟล์การกำหนดค่า php ถูกต้องหรือไม่ พยายามที่จะแสดงความคิดเห็น / uncomment ส่วนขยายบางส่วนและดูว่ามันสะท้อนให้เห็นใน phpinfo () หากไม่สามารถโหลดไฟล์ php config (ตำแหน่งที่ไม่ถูกต้อง) extension_dir จะถูกคอมเม้นต์หรือตั้งค่าเป็นตำแหน่งที่ไม่ถูกต้อง


2

ปัญหาคือ php to mysql library หายไป ใน CentOs ฉันแก้ไขด้วยการรัน # yum install php-mysqlแล้วรีสตาร์ท apache ด้วย# /bin/systemctl restart httpd.serviceโปรดสังเกตว่าการตั้งชื่อนั้นแตกต่างจากเดเบียนพื้นฐาน / distub ตามเดเบียน / php-> php5 และ httpd-> apache2 เล็กน้อย


2

ฉันมีปัญหาเดียวกันระหว่างการทดสอบกับ php.ini แยกกัน ฉันต้องเพิ่มบรรทัดเหล่านี้ไปยังไฟล์ php.ini ของฉัน:

[PHP]
extension = mysqlnd.so
extension = pdo.so
extension = pdo_mysql.so

แจ้งให้ทราบล่วงหน้า: ในคำสั่งนี้


2

ฉันขอแนะนำอย่างยิ่งmysqllndแทนที่จะเป็นmysqlเพราะคุณจะมีปัญหามากมายเช่นการแปลงตัวเลขและประเภทบิตจะประเมินปัญหาด้วยmysqlส่วนขยาย

บน Ubuntu ติดตั้งmysqllndด้วยคำสั่งต่อไปนี้:

sudo apt-get install php5-mysqlnd

1

ฉันแก้ไขปัญหานี้ใน Debian 6. โดยปกติฉันเพิ่งติดตั้งphp5-commonแพ็คเกจ หลังจากการติดตั้งคุณต้องรีสตาร์ทเว็บเซิร์ฟเวอร์ของคุณ (apache หรือ nginx ขึ้นอยู่กับว่าคุณติดตั้งเว็บไหน) จากนั้นฉันเพิ่งทำlsofในกระบวนการ apache id ( lsof -p process_id) ดังต่อไปนี้:

sudo lsof -p 1399   #replace 1399 by your apache process id
apache2 1399 root  mem    REG  254,2    80352 227236 /usr/lib/php5/20090626/xmlrpc.so
apache2 1399 root  mem    REG  254,2   166496 227235 /usr/lib/php5/20090626/suhosin.so
apache2 1399 root  mem    REG  254,2    31120 227233 /usr/lib/php5/20090626/pdo_mysql.so
apache2 1399 root  mem    REG  254,2   100776 227216 /usr/lib/php5/20090626/pdo.so
apache2 1399 root  mem    REG  254,2   135864 227232 /usr/lib/php5/20090626/mysqli.so

ขณะที่คุณสามารถดูด้านบนโมดูลที่มีการติดตั้งอยู่บนเส้นทางของไฟล์ไม่เป็นที่รู้จักหรือได้รับคำแนะนำจากเส้นทางห้องสมุดทั่วไป: usr/lib/php5/20090626// สำหรับการติดตั้งของคุณอาจแตกต่างกัน แต่เฉพาะเส้นทางของ pdo_mysql.so, pdo.so, mysqli.so ดังนั้นนี่คือเหตุผลที่ Drupal หรือโปรแกรม php อื่น ๆ ไม่สามารถหาไลบรารีและแสดงข้อผิดพลาดนั้น:PDOException: could not find driver

ผมก็ไม่ทราบว่าทำไมมันมีการติดตั้งดังกล่าวเป็นเส้นทางที่แปลกสำหรับฉันมันเป็นเพียงข้อผิดพลาดในสคริปต์การติดตั้งแพคเกจห้องสมุดในเดเบียน 6. ฉันจะแก้ไขปัญหาโดยการสร้างสัญลักษณ์สำหรับทุกไฟล์ที่อยู่ภายใต้/usr/lib/php5/20090626/การ /usr/lib/php5/กับคำสั่งนี้:

ln -s /usr/lib/php5/20090626/* /usr/lib/php5/


php-mysql เป็นรุ่นใหม่ล่าสุดแล้ว (1: 7.1 + 49 + deb.sury.org ~ xenial + 4)
Prashant Barve

1
$DB_TYPE = 'mysql'; //Type of database<br>
$DB_HOST = 'localhost'; //Host name<br>
$DB_USER = 'root'; //Host Username<br>
$DB_PASS = ''; //Host Password<br>
$DB_NAME = 'database_name'; //Database name<br><br>

$dbh = new PDO("$DB_TYPE:host=$DB_HOST; dbname=$DB_NAME;", $DB_USER, $DB_PASS); // PDO Connection

สิ่งนี้ใช้ได้สำหรับฉัน


1
ผู้ใช้คนนี้จะยังคงได้รับข้อยกเว้นเดียวกัน
eggmatters เมื่อ

1

ฉันประสบปัญหาเดียวกันหลังจากลบแพ็คเกจ php5 (ซึ่งรวมถึงไดรเวอร์ทั้งหมดด้วย) เพื่อติดตั้งแพ็คเกจ php7 ฉันติดตั้งแพ็คเกจ php7 โดยไม่ใช้โมดูล mysql

ฉันจัดการเพื่อแก้ปัญหาโดยการพิมพ์ใน terminal:

1) $ apt-cache search php7 ซึ่งแสดงรายการโมดูลทั้งหมดมองผ่านโมดูลที่พบ

php7.0-mysql - โมดูล MySQL สำหรับ PHP

2) $ sudo apt-get install php7.0-mysql

แค่นั้นแหละ. มันทำงานให้ฉันในระบบ linux ของฉัน

(ใช้รุ่น php ที่เหมาะสมคุณอาจเป็น php5)


1

อีกสิ่งหนึ่งที่จะยืนยันได้เนื่องจากบางคนคัดลอก / วางโค้ดตัวอย่างจากอินเทอร์เน็ตเพื่อเริ่มต้น ตรวจสอบให้แน่ใจว่าคุณมี MySQL ที่นี่:

... $dbh = new PDO ("mysql: ...  

ในบางตัวอย่างนี้แสดงให้เห็น

$dbh = new PDO ("dblib ...

1

ในกรณีของฉันฉันใช้ PDO กับ php-cli และใช้งานได้ดี

เมื่อฉันพยายามเชื่อมต่อจาก apache ฉันได้รับปัญหา "ไดรเวอร์หายไป" ซึ่งฉันไม่เข้าใจ

apt-get install php-mysqlแก้ไขได้ง่าย (Ubuntu 16.04 / PHP7. เครดิตไปที่คำตอบที่เลือก & ความคิดเห็นของ Ivan)

หวังว่ามันจะช่วยได้


1

สำหรับผู้ที่ใช้ Symfony2 / 3 และสงสัยว่าทำไมคุณถึงได้รับข้อผิดพลาดนี้ หากคุณใช้ "mapping_types" คุณอาจพบข้อผิดพลาดนี้ เหตุผลคือวาง "mapping_types" ในระดับที่ไม่ถูกต้อง ตัวอย่างเช่น

doctrine:
  dbal:
    mapping_types:
        set: string

จะต้องวาง "mapping_types" ในระดับนี้:

doctrine:
dbal:
    #To counter the error caused by 'mapping_types'
    connections:
        default:
            server_version: %database_server_version%
            mapping_types:
                set: string

ฉันหวังว่านี่จะช่วยได้

ฉันพบวิธีแก้ปัญหาที่นี่: https://github.com/doctrine/DoctrineBundle/issues/327


1

ทุกที่ที่ฉันไปฉันอ่านว่าเส้นทางของextension_dirควรเปลี่ยนจากextเป็นเส้นทางที่แน่นอน มันใช้งานได้สำหรับฉัน อย่างไรก็ตามเมื่อพยายามที่จะสร้างเซิร์ฟเวอร์ของพีซีของเพื่อนร่วมงานของฉันฉันต้องให้ค่ากับextแทนการใส่เส้นทางที่แน่นอน

ถ้าคุณไม่ใส่เส้นทางที่แน่นอนและมันไม่ส่วนขยายยังไม่พบ considerer extพยายามทั้งที่มีเส้นทางที่แน่นอนและ


1

มีการเรียกการติดตั้ง PHP ที่ไม่ถูกต้อง

ฉันกำลังประสบปัญหาเดียวกัน และฉันหวังว่านี่จะช่วยคนที่มีปัญหาแบบเดียวกันกับฉัน

สถานการณ์

OS = Windows 10  
Platform = XAMPP  
PHP Version = 7 (Multiple Version seem to have been installed in the PC)  

ฉันสร้างphpinfo.phpไฟล์ในpublicโฟลเดอร์และเรียกใช้phpinfo()เพื่อค้นหาตำแหน่งของphp.iniไฟล์ของฉัน

ที่ตั้ง PHP.ini = c:\xampp\php\php.ini

ปัญหา
โทรc:\xampp\htdocs> php -vกลับPHP 7.2.3แต่แสดงให้เห็นว่า phpinfo.phpPHP 7.2.2

โซลูชัน
แทนการโทร

php artisan migrate:install   

ซึ่งทำให้ฉันข้อผิดพลาดนี้ฉันใช้

c:\xampp\php\php artisan migrate:install

และมันก็ใช้งานได้



1
PHP Fatal error:  Uncaught PDOException: could not find driver

ฉันต่อสู้และต่อสู้กับ "apt install php-mysql php7toInfinity และอย่าลืม sqlite-what-ever's" และเพียงแค่ไม่สามารถกำจัดข้อความแสดงข้อผิดพลาดนี้ได้จนกว่าฉันจะกลับไปสู่พื้นฐานและรีเซ็ตสิทธิ์การใช้ไฟล์บนเว็บไซต์ ในคำถาม.

คำสั่ง 3 คำสั่งเหล่านี้รีเซ็ตการอนุญาตไฟล์และโฟลเดอร์บนเว็บไซต์และให้มันทำงานอีกครั้ง

cd /var/www/web-site-name.com/web/

# find (sub) directories and change permissions
find . -type d -exec chmod 755 {} \;

# find files and change permissions
find . -type f -exec chmod 664 '{}' \;

0

pdo_sqliteผมมีข้อยกเว้นเดียวกันเมื่อพยายามที่จะใช้ ปัญหาคือว่าสร้างขึ้นโดยอัตโนมัติ20-pdo_sqlite.iniและ20-sqlite3.inisymlink (ใน/etc/php5/mods-enabled ) เสีย

ลบ symlink ที่เสียหายและเพิ่มด้วยตนเองด้วย:

  • sudo ln -s /etc/php5/mods-avaliable/pdo_sqlite.ini /etc/php5/mods-enabled/20-pdo_sqlite.ini
  • sudo ln -s /etc/php5/mods-avaliable/sqlite3.ini /etc/php5/mods-enabled/20-sqlite3.ini

แก้ไขปัญหา

หมายเหตุ: สิ่งนี้จะใช้ไม่ได้กับ php เวอร์ชั่นเก่ากว่าเนื่องจากไม่ได้มองหา configs /etc/php5/mods-enabled

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.