Nginx

另一個 PDO 找不到驅動程序問題

  • August 17, 2019

在過去的兩個晚上,我一直在努力在 Amazon ec2 上設置我自己的 LEMP 伺服器。我不是伺服器專家,所以它進展緩慢,並且在嘗試創建新的 PDO 對象時給出了最新的錯誤“找不到驅動程序”。

我已經閱讀了關於這個錯誤的幾十個執行緒,不幸的是,沒有一個修復似乎對我有用。在大多數情況下,他們都說我必須安裝 php-mysql - 但當然這不可用:

$ sudo yum install php-mysql
Last metadata expiration check: 0:22:54 ago on Sat 17 Aug 2019 02:26:41 AM UTC.
No match for argument: php-mysql
Error: Unable to find a match

同時, phpinfo() 似乎報告安裝了驅動程序

MySQL driver for PDO    George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter

在 phpinfo() 的 PDO 部分下,它說:

PDO drivers     odbc, sqlite

所以我想mysql驅動程序真的失去了嗎?把我留在同一個地方 - 找到它並安裝它……但是如何為我的設置找到合適的?我嘗試使用 yum 進行搜尋,但失敗了(大驚喜):

$ yum search php-
Red Hat Update Infrastructure 3 Client Configuration Server 8                                                                   0.0  B/s |   0  B     00:00
Error: Failed to synchronize cache for repo 'rhui-client-config-server-8'

Google搜尋那個錯誤讓我迷失在另外一百個左右的執行緒中,這些都沒有幫助..

誰能指出我正確的方向?我想我需要執行一個特定於我的設置的簡單命令,我只需要弄清楚它是什麼..

我嘗試過的其他一些事情:

  • 從 linux 命令提示符執行 php 腳本以驗證問題是否存在:確實存在
  • 檢查 php.ini 設置(它們看起來不錯,我將它們粘貼在下面)
  • 檢查 /etc/php-fpm.d/www.conf 設置(這些看起來也不錯,將粘貼在下面)

這是我的各種作業系統詳細資訊:

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.0 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.0"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.0 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8.0:GA"
HOME_URL="https://www.redhat.com/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.0
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.0"

$ php -v
PHP 7.2.11 (cli) (built: Oct  9 2018 15:09:36) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies

$ nginx -v
nginx version: nginx/1.14.1

$ mysql --version
mysql  Ver 8.0.17 for Linux on x86_64 (Source distribution)

以及 php.ini 的一些摘錄:

[Pdo]
; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off"
; http://php.net/pdo-odbc.connection-pooling
;pdo_odbc.connection_pooling=strict

;pdo_odbc.db2_instance_name

[Pdo_mysql]
; If mysqlnd is used: Number of cache slots for the internal result set cache
; http://php.net/pdo_mysql.cache_size
pdo_mysql.cache_size = 2000

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
; http://php.net/pdo_mysql.default-socket
pdo_mysql.default_socket=

摘自/etc/php-fpm.d/www.conf:

user = nginx
group = nginx

希望這是足夠的資訊 - 提前感謝您的幫助!

PHP PDO MySQL 驅動程序位於名為php-mysqlnd. 安裝此軟體包,然後重新啟動php-fpm服務。

[root@rhel8 ~]# dnf info php-mysqlnd
Updating Subscription Management repositories.
Last metadata expiration check: 0:08:40 ago on Sat 17 Aug 2019 01:48:02 AM EDT.
Installed Packages
Name         : php-mysqlnd
Version      : 7.2.11
Release      : 1.module+el8+2561+1aca3413
Arch         : x86_64
Size         : 451 k
Source       : php-7.2.11-1.module+el8+2561+1aca3413.src.rpm
Repo         : @System
From repo    : rhel-8-for-x86_64-appstream-rpms
Summary      : A module for PHP applications that use MySQL databases
URL          : http://www.php.net/
License      : PHP
Description  : The php-mysqlnd package contains a dynamic shared object that
            : will add MySQL database support to PHP. MySQL is an
            : object-relational database management system. PHP is an
            : HTML-embeddable scripting language. If you need MySQL support for
            : PHP applications, you will need to install this package and the
            : php package.
            : 
            : This package use the MySQL Native Driver

[root@rhel8 ~]# 

引用自:https://serverfault.com/questions/979612