Azure Windows Web App中Laravel连接Azure MySQL报PDO驱动未找到
问题:Laravel连接Azure MySQL时提示"could not find driver"
我在Laravel应用中尝试连接Azure MySQL数据库时,碰到了这个错误:
In PDOConnection.php line 50: could not find driver
已经做了这些排查操作,但问题依然存在:
- 确认Web App里已经有
php_pdo_mysql.dll文件 - 创建了
extensions.ini并添加了驱动路径配置:extension=D:\Program Files\PHP\v7.2\ext\php_pdo_mysql.dll - 通过phpinfo确认
extensions.ini已经被PHP正确加载,但PDO驱动列表里还是看不到MySQL
解决方案建议
1. 核对驱动与PHP版本的兼容性
首先要确认php_pdo_mysql.dll是完全适配PHP 7.2的版本——包括线程安全(TS)/非线程安全(NTS)、x86/x64架构,这些不匹配的话驱动是无法加载的。另外也可以再检查下驱动文件的实际存放路径,是否和你配置的路径完全一致。
2. 处理路径中的空格问题
Windows路径里的空格可能会让PHP解析配置时出错,你可以试试这两种方式:
- 给路径加上引号:
extension="D:\Program Files\PHP\v7.2\ext\php_pdo_mysql.dll" - 使用Windows的8.3短路径格式(比如
D:\PROGRA~1\PHP\v7.2\ext\php_pdo_mysql.dll),避开空格带来的解析异常。
3. 检查Azure App Service的内置PHP配置
如果你的Web App用的是Azure提供的内置PHP环境,可能不需要手动修改extensions.ini,直接在Azure门户的应用服务配置里操作就行:
- 进入应用服务的“配置”面板,找到“常规设置”
- 在PHP版本选项旁,看看有没有扩展启用的入口,直接勾选MySQL相关扩展即可。
4. 确认驱动文件的权限
如果是你手动上传的php_pdo_mysql.dll,要确保Web App的运行进程有读取这个文件的权限。Azure默认的运行账户应该有读取权限,但如果是自定义路径的文件,可能需要调整权限设置。
5. 务必重启Web App
哪怕phpinfo显示extensions.ini已经加载,修改扩展配置后必须重启Web App才能生效。去Azure门户里重启你的应用服务,之后再检查PDO驱动列表,看看是否已经出现MySQL。
内容的提问来源于stack exchange,提问作者Infinite Possibilities
相关产品推荐
相关产品推荐

