Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PDO异常“;找不到驱动程序”;_Php_Mysql_Pdo_Lamp - Fatal编程技术网

Php PDO异常“;找不到驱动程序”;

Php PDO异常“;找不到驱动程序”;,php,mysql,pdo,lamp,Php,Mysql,Pdo,Lamp,我刚刚用Apache、MySQL和PHP安装了Debian Lenny,我收到一个PDO异常找不到驱动程序 这是它所指的特定代码行: $dbh=new-PDO('mysql:host='.DB\u-host';dbname='.DB\u-NAME,DB\u-USER,DB\u-PASS) DB\u HOST、DB\u NAME、DB\u USER和DB\u PASS是我定义的常量。它在生产服务器(以及我以前的Ubuntu服务器设置)上运行良好 这与我的PHP安装有关吗 搜索互联网没有帮助,我得到

我刚刚用Apache、MySQL和PHP安装了Debian Lenny,我收到一个PDO异常
找不到驱动程序

这是它所指的特定代码行:

$dbh=new-PDO('mysql:host='.DB\u-host';dbname='.DB\u-NAME,DB\u-USER,DB\u-PASS)

DB\u HOST
DB\u NAME
DB\u USER
DB\u PASS
是我定义的常量。它在生产服务器(以及我以前的Ubuntu服务器设置)上运行良好

这与我的PHP安装有关吗


搜索互联网没有帮助,我得到的只是专家交流和示例,但没有解决方案。

如果MySQL和驱动程序安装正确,您是否检查了php.ini(使用phpinfo()检查正确的位置)?

您是否检查了php.ini(使用phpinfo()检查正确的位置)如果MySQL和驱动程序安装正确?

您需要一个名为pdo_MySQL的模块。正在phpinfo()中查找以下内容


您需要一个名为pdo_mysql的模块。正在phpinfo()中查找以下内容

更新:较新版本应使用
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服务器上),您只需要运行上面的行,然后就可以开始了。

更新:新版本应该使用
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服务器上),您只需要运行上面的行,然后就可以开始了。

代码中的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安装PHP7.0-mysql
最后,要使其工作,您需要重新启动web服务器:

  • Apache:
    sudo/etc/init.d/apache2重启
  • Nginx:
    sudo/etc/init.d/Nginx重启

代码中的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安装PHP7.0-mysql
最后,要使其工作,您需要重新启动web服务器:

  • Apache:
    sudo/etc/init.d/apache2重启
  • Nginx:
    sudo/etc/init.d/Nginx重启

在我的情况下,我的DSN字符串不正确,特别是它不包含
mysql://。
我本来希望看到不同的错误消息,可能类似于“DSN字符串未指定驱动程序/协议”


mysql://
添加到DSN字符串的开头解决了问题。

在我的情况下,我的DSN字符串是不正确的,特别是它不包含
mysql://。
我会预期一条不同的错误消息,可能类似于“DSN字符串未指定驱动程序/协议”


mysql://
添加到DSN字符串的开头解决了问题。

检查php配置文件中的扩展名\u dir设置是否正确。尝试注释/取消注释一些扩展,看看它是否反映在phpinfo()上。
如果没有,则无法加载php配置文件(错误位置)扩展名\u dir被注释或设置为错误位置

检查php配置文件中的扩展名\u dir设置是否正确。尝试注释/取消注释一些扩展,看看它是否反映在phpinfo()上。
如果没有,则无法加载php配置文件(错误位置)扩展名\u dir被注释或设置为错误位置

我在Debian 6上解决了这个问题。 通常我只是安装了
php5通用
软件包。安装后,您必须重新启动web服务器(apache或nginx,具体取决于您安装的服务器)。 然后我对apache进程id(
lsof-p进程id
)执行一个
lsof
,如下所示:

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:not find driver

我只是不知道为什么它被安装在如此奇怪的路径上,对我来说,它只是Debian6中库包安装脚本中的一个bug。 我通过为
/usr/lib/php5/20090626/
下的所有文件创建一个符号来解决这个问题
/usr/lib/php5/
使用此命令:


ln-s/usr/lib/php5/20090626/*/usr/lib/php5/
我在我的Debian 6上修复了这个问题。 通常我只是安装了
php5通用
软件包。安装后,您必须重新启动web服务器(apache或nginx,具体取决于您安装的服务器)。 然后我对apache进程id(
lsof-p进程id
)执行一个
lsof
,如下所示:

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
如上所示,模块已安装
[PHP_PDO]
extension=php_pdo.dll
[PHP_PDO_MYSQL]
extension=php_pdo_mysql.dll
sudo apt-get install php-mysql 
... $dbh = new PDO ("mysql: ...  
$dbh = new PDO ("dblib ...
[PHP]
extension = mysqlnd.so
extension = pdo.so
extension = pdo_mysql.so
sudo apt-get install php-mysql
sudo service apache2 restart
sudo apt-get install php5-mysqlnd
php -v
sudo apt-get install php7.0-mysql
doctrine:
  dbal:
    mapping_types:
        set: string
doctrine:
dbal:
    #To counter the error caused by 'mapping_types'
    connections:
        default:
            server_version: %database_server_version%
            mapping_types:
                set: string
apt-get install php-mysql
apt-get install php7.0-mysql
uncomment the line : extension=php_pdo_mysql.dll
service apache2 restart
OS = Windows 10  
Platform = XAMPP  
PHP Version = 7 (Multiple Version seem to have been installed in the PC)  
php artisan migrate:install   
c:\xampp\php\php artisan migrate:install
cd /www/homestead/my_project
php artisan migrate
cd ~/homestead
vagrant ssh   
cd /www/homestead/my_project
php artisan migrate
PHP Fatal error:  Uncaught PDOException: could not find driver
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 '{}' \;