我刚刚安装了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安装有关吗?
在网上搜索也没有帮助,我得到的都是专家交流和例子,但没有解决方案。
代码中的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 '{}' \;
对于那些使用Symfony2/3并想知道为什么会得到这个错误的人。如果您正在使用“mapping_types”,则可能会遇到此错误。原因是“mapping_types”被放在了错误的级别。例如:
doctrine:
dbal:
mapping_types:
set: string
这个“mapping_types”必须放在这个级别:
doctrine:
dbal:
#To counter the error caused by 'mapping_types'
connections:
default:
server_version: %database_server_version%
mapping_types:
set: string
我希望这对你们有帮助
我在这里找到了解决方案:https://github.com/doctrine/DoctrineBundle/issues/327