由于缺少 PHP 扩展,CakePHP 3 无法连接到数据库

Posted

技术标签:

【中文标题】由于缺少 PHP 扩展,CakePHP 3 无法连接到数据库【英文标题】:CakePHP 3 is NOT able to connect to the database due to a missing PHP extension 【发布时间】:2015-06-06 20:20:03 【问题描述】:

我正在尝试使用 WT-NMP 安装 cakephp 3.0.0,但我收到了以下消息:

CakePHP 无法连接到数据库。

数据库驱动 Cake\Database\Driver\mysql 无法使用,原因是 缺少 PHP 扩展或未满足的依赖项

我的 php.ini 有这个:

extension = php_bz2.dll
extension = php_curl.dll
extension = php_gd2.dll
extension = php_imap.dll
extension = php_mbstring.dll
extension = php_exif.dll
extension = php_mysql.dll
extension = php_mysqli.dll
extension = php_pdo_mysql.dll
extension = php_pdo.dll
extension = php_soap.dll
extension = php_sockets.dll
extension = php_sqlite3.dll
extension = php_openssl.dll
extension = php_fileinfo.dll
extension = php_intl.dll

app.php 有这个

    'default' => [
        'className' => 'Cake\Database\Connection',
        'driver' => 'Cake\Database\Driver\Mysql',
        'persistent' => false,
        'host' => 'localhost',
        /**
         * CakePHP will use the default DB port based on the driver selected
         * MySQL on MAMP uses port 8889, MAMP users will want to uncomment
         * the following line and set the port accordingly
         */
        'port' => '3306',
        'username' => 'root',
        'password' => '',
        'database' => 'test',
        'encoding' => 'utf8',
        'timezone' => 'UTC',
        'cacheMetadata' => true,

我错过了什么?或者这是 cakePHP 3.0 错误?或与 WT-NMP 有关的任何事情。 我被困了一整天。

【问题讨论】:

【参考方案1】:

幸运地解决了这个问题!:

extension = php_intl.dll
extension = php_pdo_mysql.dll
intl.default_locale = en_utf8
intl.error_level = E_WARNING

【讨论】:

请详细说明。 更多解释会更好。 特别是 extension = php_pdo_mysql.dll 为我做了。【参考方案2】:

安装modules for MySQL database connections 为我解决了这个问题:

#Install the package
sudo apt-get install php5-mysql
#Restart Apache
sudo service apache2 restart

来源:http://guru4cakephp.blogspot.nl/2015/04/install-cakephp-3-on-ubuntu.html

包裹详情:https://packages.debian.org/sid/php5-mysql

【讨论】:

【参考方案3】:

试试这个:

对于 PHP 7.0

sudo apt-get install php7.0-mysql

对于 PHP 5:

sudo apt-get install php5-mysql

【讨论】:

在 php7.3 上为我工作 sudo apt-get install php7.3-mysql【参考方案4】:

错误消息是因为extension = php_pdo_mysql.dll 未在php.ini 中安装和启用。如果你没有启用php_intl.dll,你会在检查数据库连接之前得到一个错误。

您的php.ini 表示您已启用php_pdo_mysql.dll,但可能需要重新启动CakePHP server bin/cake server

【讨论】:

【参考方案5】:

不要仅仅依赖于 php.ini 的读取。只需检查您是否安装了 php[v]-mysql 扩展。您可以检查 php_mysql.dll 是否存在于基于 Windows 的服务器的 php 扩展目录(很可能是<path to your php installation>/ext)中。在linux下可以使用以下命令检查是否安装。

yum list installed | grep php

它会列出所有安装的 php 扩展。

【讨论】:

以上是关于由于缺少 PHP 扩展,CakePHP 3 无法连接到数据库的主要内容,如果未能解决你的问题,请参考以下文章

CakePhp 3.0:PDO 问题

CAKEPHP 3 和 Dompdf - 缺少 Cpdf.php 类

无法在本地环境中使用 docker 连接到 cakephp 中的 mysql 数据库

Pentaho Spoon 由于缺少驱动程序(jar 文件)而无法连接到 IBM DB2 数据库

无法安装 Composer:尽管安装了 php5-json,但缺少 json 扩展

在 MacOS 上安装 PHP intl 扩展 [关闭]