Nginx
另一個 PDO 找不到驅動程序問題
在過去的兩個晚上,我一直在努力在 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 ~]#