我刚刚安装了Debian Lenny与Apache, 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是我已经定义的常量。它在生产服务器(以及我之前的Ubuntu server设置)上运行良好。

这与我的PHP安装有关吗?

在网上搜索也没有帮助,我得到的都是专家交流和例子,但没有解决方案。


当前回答

我强烈推荐mysqllnd而不是mysql,因为你会有很多问题,如数字转换和位类型计算的问题与mysql扩展。

在ubuntu上使用以下命令安装mysqllnd:

sudo apt-get install php5-mysqlnd

其他回答

无论我走到哪里,我都读到extension_dir的路径应该从ext更改为绝对路径。这对我很管用。然而,当我试图构建我同事PC的服务器时,我不得不让值到ext而不是放置一个绝对路径。

如果您确实放置了一个绝对路径,但仍然没有找到扩展名,请考虑同时尝试使用绝对路径和ext。

你检查你的php.ini(检查正确的位置与phpinfo()),如果MySQL和驱动程序安装正确?

您需要有一个名为pdo_mysql的模块。寻找以下在phpinfo(),

pdo_mysql

PDO Driver for MySQL, client library version => 5.1.44

代码中的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 restart Nginx: sudo /etc/init.d/nginx restart

PHP Fatal error:  Uncaught PDOException: could not find driver

我挣扎着,挣扎着“apt安装php-mysql php7toInfinity和不要忘记sqlite- whatever -ever's”,只是无法摆脱这个错误消息,直到我回到基础,重置文件权限在网站上的问题。

这3个命令重置文件和文件夹的权限在网站上,让它再次工作。

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 '{}' \;