PHP 缺少 mysql pdo 驱动程序

All*_*ore 1 php mysql pdo symfony php-7

我正在尝试使用从源代码安装的 php 7 运行 Symfony 3 应用程序,但我收到了缺少 PDO 驱动程序的异常。根据http://pecl.php.net/package/PDO_MYSQL,PDO_MYSQL扩展现在是 PHP 核心的一部分。

Q1.a) 如果我有 PDO_MYSQL 扩展(我必须,因为它的核心)是否意味着我也有 mysql pdo 驱动程序?

Q2.b) 为了确保驱动程序被使用,我还需要做进一步的运行时配置吗?

我试过添加

扩展名=php_pdo.so

扩展名=php_pdo_mysql.so

到我加载的 php.ini 文件。

Q2.a) 这些是正确的扩展名吗?我怎么知道?
Q2.b) 我什至必须为核心 php 元素提供扩展引用吗?

最后:

Q3。如何检查我的 PHP 安装是否包含 mysql pdo 驱动程序,以及如何确保它在运行时被加载?

感谢您的输入。

编辑 1:我在 Linux Mint 上运行。
编辑 2:这里有一些关于我所看到的更多细节:

“在启动内置 php 服务器时,我收到以下消息:PHP 警告:PHP 启动:无法加载动态库 '/usr/local/lib/php/extensions/no-debug-non-zts-20151012/php_pdo。 so' - /usr/local/lib/php/extensions/no-debug-non-zts-20151012/php_pdo.so:无法打开共享对象文件:第 0 行未知中没有此类文件或目录 PHP 警告:PHP 启动:无法加载动态库 '/usr/local/lib/php/extensions/no-debug-non-zts-20151012/php_pdo_mysql.so' - /usr/local/lib/php/extensions/no-debug-non-zts -20151012/php_pdo_mysql.so: 无法打开共享对象文件:第 0 行的 Unknown 中没有这样的文件或目录"

此消息向我表明扩展引用不正确或扩展不存在。我使用了“dpkg -L php-mysql”并发现该软件包安装在“/usr/share/doc/php-mysql”但是,当我检查 php-mysql 目录时,我看到的只是一个更改日志和一个版权文件(显示隐藏)。这是包的真正安装位置吗?如果是,这个目录中是否应该有更多?

Hor*_*Kol 5

.so 意味着您使用的是 Linux - 您是否将 PHP 作为软件包安装。您可能需要安装 pdo/mysql 包 - PHP 库可能是“核心”,但不一定在主包中(令人困惑,但这只是意味着它不是 PEAR 交付的,真的)。

sudo apt-get install php5-mysql
Run Code Online (Sandbox Code Playgroud)

或者,如果您运行的是 PHP7:

sudo apt-get install php-mysql
Run Code Online (Sandbox Code Playgroud)

这应该会自动重新启动 apache,但要确保您可以执行以下操作:

sudo service apache2 restart
Run Code Online (Sandbox Code Playgroud)

php-mysql 的包安装程序应该已经把 .so 库放进去了/usr/lib/php/yyyymmdd/——如果你已经将 PHP 作为一个包安装了,它会在这里查找。

但是,由于您是从源代码安装的,因此 PHP 似乎正在别处寻找这些库。您可以创建指向/usr/local/lib/php/extensions/no-debug-non-zts-20151012/包安装库的符号链接。