为什么缺少 PHP 7 个 PDO 驱动程序?
Why are PHP 7 PDO drivers missing?
好的,就这样。我在本地服务器上的 MySQL
数据库上有 PDO
连接。这是它的代码
<?php
$servername = "localhost";
$username = "root";
$password = "";
try {
$dbh = new PDO('localhost:host=$servername;dbname=test', $username, $password);
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
当我打开页面时出现此错误。
Error!: could not find a driver
很明显缺少驱动程序,但我不知道如何安装它们。我已经用过
sudo pacman -S php
sudo pacman -S php-sqlite
sudo pacman -S mysql
也许我忘记了一些。这是我的 /etc/php/php.ini 文件的内容
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename
;
; For example:
;
; extension=mysqli
;
; When the extension library to load is not located in the default extension
; directory, You may specify an absolute path to the library file:
;
extension=/path/to/extension/mysqli.so
;
; Note : The syntax used in previous PHP versions ('extension=<ext>.so' and
; 'extension='php_<ext>.dll') is supported for legacy reasons and may be
; deprecated in a future PHP major version. So, when it is possible, please
; move to the new ('extension=<ext>) syntax.
;
;extension=bcmath
;extension=bz2
;extension=calendar
extension=curl
;extension=dba
;extension=enchant
;extension=exif
;extension=ftp
extension=gd
;extension=gettext
;extension=gmp
;extension=iconv
;extension=imap
;extension=intl
;extension=sodium
;extension=ldap
;extension=mysqli
;extension=odbc
;zend_extension=opcache
;extension=pdo_dblib
extension=pdo_mysql
extension=bz2.so
extension=mcrypt.so
extension=mysqli
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=pspell
;extension=shmop
;extension=snmp
;extension=soap
;extension=sockets
extension=sqlite3
;extension=sysvmsg
;extension=sysvsem
;extension=sysvshm
;extension=tidy
;extension=xmlrpc
;extension=xsl
extension=zip
它没有让我上传整个文件,所以这里只上传了一部分。如果您需要更多详细信息,我很乐意在评论中添加它们。
也许我遗漏了一些明显的东西,但我几天都找不到。
编辑
很抱歉没有指出这一点。
我正在使用 Manjaro Linux OS
我认为缺少 PDO 扩展。添加以下扩展并重新启动您的服务器
对于 windows 服务器 -
extension=php_pdo.dll
extension=php_pdo_mysql.dll
对于 Linux 服务器 -
extension=pdo.so
extension=pdo_mysql.so
试试这个
sudo apt-get install php7-mysql
创建连接时,您的 DSN 将 localhost
作为数据库类型...
$dbh = new PDO('localhost:host=$servername;dbname=test', $username, $password);
来自 manual
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
另外由于你使用单引号,服务器名不会被替换,所以使用
$dbh = new PDO("mysql:host=$servername;dbname=test", $username,
好的,就这样。我在本地服务器上的 MySQL
数据库上有 PDO
连接。这是它的代码
<?php
$servername = "localhost";
$username = "root";
$password = "";
try {
$dbh = new PDO('localhost:host=$servername;dbname=test', $username, $password);
$dbh = null;
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
?>
当我打开页面时出现此错误。
Error!: could not find a driver
很明显缺少驱动程序,但我不知道如何安装它们。我已经用过
sudo pacman -S php
sudo pacman -S php-sqlite
sudo pacman -S mysql
也许我忘记了一些。这是我的 /etc/php/php.ini 文件的内容
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename
;
; For example:
;
; extension=mysqli
;
; When the extension library to load is not located in the default extension
; directory, You may specify an absolute path to the library file:
;
extension=/path/to/extension/mysqli.so
;
; Note : The syntax used in previous PHP versions ('extension=<ext>.so' and
; 'extension='php_<ext>.dll') is supported for legacy reasons and may be
; deprecated in a future PHP major version. So, when it is possible, please
; move to the new ('extension=<ext>) syntax.
;
;extension=bcmath
;extension=bz2
;extension=calendar
extension=curl
;extension=dba
;extension=enchant
;extension=exif
;extension=ftp
extension=gd
;extension=gettext
;extension=gmp
;extension=iconv
;extension=imap
;extension=intl
;extension=sodium
;extension=ldap
;extension=mysqli
;extension=odbc
;zend_extension=opcache
;extension=pdo_dblib
extension=pdo_mysql
extension=bz2.so
extension=mcrypt.so
extension=mysqli
;extension=pdo_odbc
;extension=pdo_pgsql
extension=pdo_sqlite
;extension=pgsql
;extension=pspell
;extension=shmop
;extension=snmp
;extension=soap
;extension=sockets
extension=sqlite3
;extension=sysvmsg
;extension=sysvsem
;extension=sysvshm
;extension=tidy
;extension=xmlrpc
;extension=xsl
extension=zip
它没有让我上传整个文件,所以这里只上传了一部分。如果您需要更多详细信息,我很乐意在评论中添加它们。 也许我遗漏了一些明显的东西,但我几天都找不到。
编辑 很抱歉没有指出这一点。 我正在使用 Manjaro Linux OS
我认为缺少 PDO 扩展。添加以下扩展并重新启动您的服务器
对于 windows 服务器 -
extension=php_pdo.dll
extension=php_pdo_mysql.dll
对于 Linux 服务器 -
extension=pdo.so
extension=pdo_mysql.so
试试这个
sudo apt-get install php7-mysql
创建连接时,您的 DSN 将 localhost
作为数据库类型...
$dbh = new PDO('localhost:host=$servername;dbname=test', $username, $password);
来自 manual
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
另外由于你使用单引号,服务器名不会被替换,所以使用
$dbh = new PDO("mysql:host=$servername;dbname=test", $username,