由于缺少 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 和 Dompdf - 缺少 Cpdf.php 类
无法在本地环境中使用 docker 连接到 cakephp 中的 mysql 数据库
Pentaho Spoon 由于缺少驱动程序(jar 文件)而无法连接到 IBM DB2 数据库