为何Ubuntu主机可运行artisan migrate,Windows主机却提示PDO驱动缺失?
为什么Windows主机执行
php artisan migrate会报「pdo not found driver」? 这个问题的核心其实很直白:你在主机上执行命令时,调用的是Windows本地的PHP环境,而非Docker容器内的PHP环境,这两个环境完全独立,问题就出在两者的配置差异上。
具体原因拆解:
- Ubuntu主机本地PHP已配置好PDO驱动:在Ubuntu上安装PHP时,你大概率已经通过包管理器(比如
apt)安装了对应数据库的PDO扩展(比如php-mysql,它包含pdo_mysql驱动),所以本地PHP能正常连接到容器里的数据库,执行迁移自然没异常。 - Windows主机本地PHP缺少PDO驱动:Windows下的PHP默认通常不会自动启用PDO相关扩展,甚至可能没安装对应的驱动文件。比如要连接MySQL的话,你需要检查:
php.ini文件里extension=pdo_mysql这一行有没有去掉前面的分号(即启用该扩展);- PHP安装目录的
ext文件夹里是否存在php_pdo_mysql.dll文件; - 系统环境变量是否正确配置了PHP的路径,确保命令行能找到PHP执行文件。
你可以快速验证这点:在Windows命令行执行php -m,查看输出的模块列表里有没有pdo_mysql(或者你所用数据库对应的PDO驱动,比如pdo_pgsql)。如果没有,那就是驱动未启用/未安装的问题。
额外补充:容器内执行没问题是因为容器里的PHP环境是专门为Laravel配置的,已经预装了所有必需的扩展,和主机环境完全无关。
内容的提问来源于stack exchange,提问作者Pedrog
相关产品推荐
相关产品推荐

