복붙노트

PDOException "드라이버를 찾을 수 없습니다"

PHP

PDOException "드라이버를 찾을 수 없습니다"

아파치, MySQL, PHP로 데비안 레니를 설치했고 드라이버를 찾을 수없는 PDOException이 발생했습니다.

이것은 참조하고있는 특정 코드 행입니다.

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

DB_HOST, DB_NAME, DB_USER 및 DB_PASS는 내가 정의한 상수입니다. 그것은 프로덕션 서버 (그리고 이전의 우분투 서버 설정)에서 잘 작동합니다.

이것은 내 PHP 설치와 관련이 있습니까?

인터넷 검색은 도움이되지 못했습니다. 전문가 교환 및 예제가 있지만 해결책은 없습니다.

해결법

  1. ==============================

    1.pdo_mysql 모듈이 필요합니다. phpinfo ()에서 다음을 찾고,

    pdo_mysql 모듈이 필요합니다. phpinfo ()에서 다음을 찾고,

    pdo_mysql
    
    PDO Driver for MySQL, client library version => 5.1.44
    
  2. ==============================

    2.코드에서 dsn은 mysql 드라이버와 연결을 시도하고 있음을 보여줍니다. 오류 메시지는이 드라이버를 사용할 수 없음을 나타냅니다.

    코드에서 dsn은 mysql 드라이버와 연결을 시도하고 있음을 보여줍니다. 오류 메시지는이 드라이버를 사용할 수 없음을 나타냅니다.

    서버에 mysql 확장이 설치되어 있는지 확인하십시오.

    우분투 / 데비안에서는 다음과 함께 패키지를 확인합니다.

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

    php5-mysql 패키지가 없으면 설치하십시오.

    우분투 / 데비안에서는 다음을 사용할 수 있습니다 :

    마지막으로 작동 시키려면 웹 서버를 다시 시작해야합니다.

  3. ==============================

    3.업데이트 : 최신 버전은 php5-sqlite 대신 php-sqlite3 패키지를 사용해야합니다. 우분투 버전을 사용하고 있다면 이것을 사용하십시오 :

    업데이트 : 최신 버전은 php5-sqlite 대신 php-sqlite3 패키지를 사용해야합니다. 우분투 버전을 사용하고 있다면 이것을 사용하십시오 :

    sudo apt-get install sqlite php-sqlite3
    

    질문에 대한 원래 답변은 다음과 같습니다.

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

    phpinfo ()가 pdo_sqlite 행을 표시하지 않는다면 (위의 경우 내 우분투 서버에서), 위의 행을 실행하기 만하면됩니다.

  4. ==============================

    4.내 Windows 컴퓨터에서 php.ini 파일의 확장자 dir에 대한 절대 경로를 지정해야했습니다.

    내 Windows 컴퓨터에서 php.ini 파일의 확장자 dir에 대한 절대 경로를 지정해야했습니다.

    extension_dir = "c : \ php5 \ ext"

  5. ==============================

    5.PHP 7.0을 사용하는 Ubuntu 최신 버전의 경우 php-mysql 패키지를 얻을 수 있습니다.

    PHP 7.0을 사용하는 Ubuntu 최신 버전의 경우 php-mysql 패키지를 얻을 수 있습니다.

    sudo apt-get install php-mysql
    

    그런 다음 서버를 다시 시작하십시오.

    sudo service apache2 restart
    
  6. ==============================

    6.우분투에서 그냥 실행

    우분투에서 그냥 실행

    sudo apt-get install php5-mysql
    
  7. ==============================

    7.나는 같은 문제가 있었다. 솔루션은 OS에 따라 다릅니다. 제 경우에는 데비안을 가지고 있습니다. 문제를 해결하려면 :

    나는 같은 문제가 있었다. 솔루션은 OS에 따라 다릅니다. 제 경우에는 데비안을 가지고 있습니다. 문제를 해결하려면 :

    이것은 내 문제를 해결한다.

  8. ==============================

    8.

    sudo apt-get install php-mysql 
    

    우분투와 PHP 7에서 잘 작동했습니다.

  9. ==============================

    9.MySQL과 드라이버가 올바르게 설치되어 있다면 php.ini (phpinfo ()로 정확한 위치를 확인하십시오)를 확인 했습니까?

    MySQL과 드라이버가 올바르게 설치되어 있다면 php.ini (phpinfo ()로 정확한 위치를 확인하십시오)를 확인 했습니까?

  10. ==============================

    10.이 파일들을 php.ini 파일에 추가 할 때, php_pdo.dll 참조가 db 드라이버 dll보다 먼저 나오는지 확인하십시오. 그렇지 않으면,이 오류 메시지도 발생할 수 있습니다. 다음과 같이 추가하십시오.

    이 파일들을 php.ini 파일에 추가 할 때, php_pdo.dll 참조가 db 드라이버 dll보다 먼저 나오는지 확인하십시오. 그렇지 않으면,이 오류 메시지도 발생할 수 있습니다. 다음과 같이 추가하십시오.

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

    11.CentOS의 PHP 5.5의 경우 php55-mysqlnd 패키지를 설치하여이 문제를 해결했습니다.

    CentOS의 PHP 5.5의 경우 php55-mysqlnd 패키지를 설치하여이 문제를 해결했습니다.

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

    설치에 도움이 필요하면 PHP가 시스템에 설치된 방식에 따라 코멘트를 작성하십시오. 사용 가능한 레포는 웹 및 레미입니다.

  12. ==============================

    12.마지막 날에 왜 내가 다음과 같은 오류가 발생했는지 파악하려고 노력했습니다. 나는 우분투 14.04를 사용하고있다.

    마지막 날에 왜 내가 다음과 같은 오류가 발생했는지 파악하려고 노력했습니다. 나는 우분투 14.04를 사용하고있다.

    문제 : 내 PHP-CLI 버전이 php7.0을 실행하고 있지만 php_info () (웹 버전)가 php 5.5.9를 표시하고 있음을 확인했습니다. php_info ()가 pdo가 활성화되었다고했지만 명령 행 (CLI)을 사용하면 pdo_mysql 명령을 인식하지 못했습니다. mysql이 이전 버전에서는 가능했지만 CLI 버전에서는 사용할 수 없었습니다. 내가 한 모든 일은 php7.0을위한 mysql을 설치하는 것이고 작동 할 수 있었다.

    이것은 효과가 있습니다 :

    버전을 확인하려면 :

    php -v
    

    php7.0 용 mysql을 설치하려면

    sudo apt-get install php7.0-mysql
    

    1) CLI 버전이 웹 버전과 동일한 지 확인하십시오 2) 서로 다르면 CLI 버전이 기본값으로 제공되지 않으므로 CLI 버전에 mysql 플러그 인이 있는지 확인하십시오.

  13. ==============================

    13.PHP 구성 파일의 extension_dir이 올바르게 설정되었는지 확인하십시오. 일부 확장 프로그램의 주석을 달고 주석을 제거하고 phpinfo ()에 반영되었는지 확인하십시오. 그렇지 않으면 두 PHP 구성 파일을로드 할 수 없습니다 (잘못된 위치). extension_dir이 주석 처리되었거나 잘못된 위치로 설정되었습니다.

    PHP 구성 파일의 extension_dir이 올바르게 설정되었는지 확인하십시오. 일부 확장 프로그램의 주석을 달고 주석을 제거하고 phpinfo ()에 반영되었는지 확인하십시오. 그렇지 않으면 두 PHP 구성 파일을로드 할 수 없습니다 (잘못된 위치). extension_dir이 주석 처리되었거나 잘못된 위치로 설정되었습니다.

  14. ==============================

    14.제 경우에는 DSN 문자열이 잘못되었습니다. 특히 mysql : //을 포함하지 않았습니다. 나는 'DSN 문자열이 드라이버 / 프로토콜을 지정하지 않았다'와 같은 다른 오류 메시지를 예상했을 것입니다.

    제 경우에는 DSN 문자열이 잘못되었습니다. 특히 mysql : //을 포함하지 않았습니다. 나는 'DSN 문자열이 드라이버 / 프로토콜을 지정하지 않았다'와 같은 다른 오류 메시지를 예상했을 것입니다.

    DSN 문자열의 시작 부분에 mysql : //을 추가하면 문제가 해결되었습니다.

  15. ==============================

    15.문제는 mysql 라이브러리에 빠진 PHP입니다. CentOs에서 실행하여 고정 시켰습니다.  # yum php-mysql을 설치하고 # / bin / systemctl restart httpd.service로 아파치를 재시작하십시오. 이름은 debian / 우분투 기반의 배포판 인 php-> php5 및 httpd-> apache2와 약간 다릅니다.

    문제는 mysql 라이브러리에 빠진 PHP입니다. CentOs에서 실행하여 고정 시켰습니다.  # yum php-mysql을 설치하고 # / bin / systemctl restart httpd.service로 아파치를 재시작하십시오. 이름은 debian / 우분투 기반의 배포판 인 php-> php5 및 httpd-> apache2와 약간 다릅니다.

  16. ==============================

    16.mysql 대신 mysqllnd를 추천한다. 왜냐하면 당신은 숫자 변환과 같은 많은 문제를 가지고있을 것이고 bit type은 mysql 확장과 관련된 문제를 평가할 것이기 때문이다.

    mysql 대신 mysqllnd를 추천한다. 왜냐하면 당신은 숫자 변환과 같은 많은 문제를 가지고있을 것이고 bit type은 mysql 확장과 관련된 문제를 평가할 것이기 때문이다.

    우분투에서 다음 명령으로 mysqllnd를 설치하십시오 :

    sudo apt-get install php5-mysqlnd
    
  17. ==============================

    17.Debian 6에서이 문제가 해결되었습니다. 일반적으로 나는 php5-common 패키지를 설치했다. 설치가 끝나면 웹 서버 (아파치 또는 nginx를 설치 한 것에 따라)를 다시 시작해야합니다. 그럼 난 다음과 같이 lsof를 아파치 프로세스 ID (lsof -p process_id)에서 수행한다.

    Debian 6에서이 문제가 해결되었습니다. 일반적으로 나는 php5-common 패키지를 설치했다. 설치가 끝나면 웹 서버 (아파치 또는 nginx를 설치 한 것에 따라)를 다시 시작해야합니다. 그럼 난 다음과 같이 lsof를 아파치 프로세스 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 : 드라이버를 찾을 수 없습니다.

    왜 그런 괴괴 망측 한 경로에 설치되었는지 모르겠다. 나에게 이것은 debian 6의 라이브러리 패키지 설치 스크립트에있는 버그 일 뿐이다. / usr / lib / php5 / 20090626 / 아래의 모든 파일에 대한 심볼을 작성하여이 문제를 해결했습니다. / usr / lib / php5 / 다음 명령을 사용하십시오.

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

  18. ==============================

    18.

    $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
    

    이것은 나를 위해 일했다.

  19. ==============================

    19.필자는 php5 패키지 (모든 드라이버 포함)를 제거한 후 php7 패키지를 설치 한 후 동일한 문제에 직면했습니다. 실제로 mysql 모듈없이 php7 패키지를 설치했다.

    필자는 php5 패키지 (모든 드라이버 포함)를 제거한 후 php7 패키지를 설치 한 후 동일한 문제에 직면했습니다. 실제로 mysql 모듈없이 php7 패키지를 설치했다.

    터미널에서 다음을 입력하여 문제를 해결할 수있었습니다.

    1) $ apt-cache 검색 php7 모든 모듈을 나열하고 내가 찾은 모듈을보고,

    php7.0-mysql - PHP 용 MySQL 모듈

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

    그게 전부 야. 그것은 내 리눅스 시스템에서 나를 위해 일했다.

    (적절한 PHP 버전을 사용하십시오. php5 일 수 있습니다)

  20. ==============================

    20.나는 별도의 php.ini로 테스트를 실행하는 동안 같은 문제가 발생했다. 필자는 php.ini 파일에 다음 행을 추가해야했습니다.

    나는 별도의 php.ini로 테스트를 실행하는 동안 같은 문제가 발생했다. 필자는 php.ini 파일에 다음 행을 추가해야했습니다.

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

    Notice : 정확히이 순서대로

  21. ==============================

    21.제 경우에는 php-cli로 PDO를 사용하고 있었고 정상적으로 작동했습니다.

    제 경우에는 php-cli로 PDO를 사용하고 있었고 정상적으로 작동했습니다.

    아파치에서 연결을 시도 할 때만, 나는 "이해 못했던" "누락 된 드라이버"문제를 가지고있다.

    간단한 apt-get 설치로 php-mysql이 문제를 해결했습니다. (우분투 16.04 / PHP7 크레딧은 선택한 답변 및 Ivan의 의견으로 이동)

    희망이 도움이 될 수 있습니다.

  22. ==============================

    22.Symfony2 / 3을 사용하고 있으며 왜이 오류가 발생하는지 궁금합니다. "mapping_types"를 사용하는 경우이 오류가 발생할 수 있습니다. 그 이유는 "mapping_types"가 잘못된 레벨에 배치되기 때문입니다. 예를 들면 :

    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

  23. ==============================

    23.Windows 8.1 / 10의 경우 : \\ php.ini 파일에서 "extension = pdo_mysql"줄의 주석 처리를 제거해야합니다.

    Windows 8.1 / 10의 경우 : \\ php.ini 파일에서 "extension = pdo_mysql"줄의 주석 처리를 제거해야합니다.

  24. ==============================

    24.pdo_sqlite를 사용하려고 할 때도 같은 예외가있었습니다. 문제는 자동으로 생성 된 20-pdo_sqlite.ini 및 20-sqlite3.ini 심볼릭 링크 (/ etc / php5 / mods- 사용 가능)가 손상되었음을 나타냅니다.

    pdo_sqlite를 사용하려고 할 때도 같은 예외가있었습니다. 문제는 자동으로 생성 된 20-pdo_sqlite.ini 및 20-sqlite3.ini 심볼릭 링크 (/ etc / php5 / mods- 사용 가능)가 손상되었음을 나타냅니다.

    깨진 심볼릭 링크를 제거하고 수동으로 추가하기 :

    문제가 해결되었습니다.

  25. ==============================

    25.어떤 사람들은 인터넷에서 예제 코드를 복사하여 붙여 넣기 만하면됩니다. 여기에 MySQL을 입력했는지 확인하십시오 :

    어떤 사람들은 인터넷에서 예제 코드를 복사하여 붙여 넣기 만하면됩니다. 여기에 MySQL을 입력했는지 확인하십시오 :

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

    일부 예에서는

    $dbh = new PDO ("dblib ...
    
  26. ==============================

    26.테스트를 위해 sqlite를 사용하고 있다면 PHP sqlite pdo drive가 필요합니다. 다음과 같이 설치할 수 있습니다.

    테스트를 위해 sqlite를 사용하고 있다면 PHP sqlite pdo drive가 필요합니다. 다음과 같이 설치할 수 있습니다.

    우분투 14.04 용

    sudo apt-get install php5-sqlite
    sudo service apache2 restart
    

    우분투 16.04에는 php5-sqlite가 없습니다.

    sudo apt-get install php7.0-sqlite
    sudo service apache2 restart
    
  27. ==============================

    27.리눅스 민트의 경우

    리눅스 민트의 경우

    PhpBrew (5.5.9 / 7.0.14)를 사용하고 PDO 연결을 만들려고하는 동안 같은 문제가 발생했습니다.

    이 게시물에서 대부분의 솔루션을 시도한 후에 다음과 같은 작업을 수행했습니다.

  28. ==============================

    28.모든 곳에서 extension_dir의 경로가 ext에서 절대 경로로 변경되어야한다는 것을 알게되었습니다. 그것은 나를 위해 일했습니다. 그러나 동료의 PC 서버를 만들려고 할 때 절대 경로를 입력하는 대신 ext에 값을 지정해야했습니다.

    모든 곳에서 extension_dir의 경로가 ext에서 절대 경로로 변경되어야한다는 것을 알게되었습니다. 그것은 나를 위해 일했습니다. 그러나 동료의 PC 서버를 만들려고 할 때 절대 경로를 입력하는 대신 ext에 값을 지정해야했습니다.

    당신이 절대 경로를 넣었습니까? 그리고 확장이 여전히 발견되지 않으면, considerer는 절대 경로와 ext를 모두 시도합니다.

  29. ==============================

    29.같은 문제가 있었는데, 그냥 생각, 웹 사이트는 MAMP의 PHP에서 실행되고 있지만, 당신이 명령에서 전화를하면 맥을 (bash 경로가 수정되지 않은 경우) 실행합니다. Mac에 이러한 확장자가없는 경우 문제가 발생합니다.

    같은 문제가 있었는데, 그냥 생각, 웹 사이트는 MAMP의 PHP에서 실행되고 있지만, 당신이 명령에서 전화를하면 맥을 (bash 경로가 수정되지 않은 경우) 실행합니다. Mac에 이러한 확장자가없는 경우 문제가 발생합니다.

    php -i를 실행하여로드 된 확장 프로그램을 찾아보고 놓친 확장 프로그램을 설치하십시오. 또는 MAMP를 사용하려면 '/Applications/MAMP/bin/php/php5.3.6/bin/php artisan {당신의 명령}'을 실행하십시오

  30. ==============================

    30."IIS 정보 서비스 -> PHP 확장"에서 php_pdo_mysql.dll을 활성화하여이 문제를 해결했습니다.

    "IIS 정보 서비스 -> PHP 확장"에서 php_pdo_mysql.dll을 활성화하여이 문제를 해결했습니다.

  31. from https://stackoverflow.com/questions/2852748/pdoexception-could-not-find-driver by cc-by-sa and MIT license