Docker环境下CakePHP 1.3兼容的MySQL连接驱动推荐
适配CakePHP 1.3的MySQL驱动配置方案
CakePHP 1.3采用旧版数据源架构,你当前配置的Cake\Database\Driver\Mysql是CakePHP 3.x及后续版本的驱动,完全不兼容1.3版本。以下是Docker环境下的适配方案:
1. 修正database.php驱动配置
将驱动字段改为CakePHP 1.3原生支持的值,同时保留环境变量注入逻辑:
class DATABASE_CONFIG { public function __construct() { $this->default['host'] = getenv('MYSQL_URL'); $this->default['login'] = getenv('MYSQL_USERNAME'); $this->default['password'] = getenv('MYSQL_PASSWORD'); } var $default = array( 'driver' => 'mysql', // CakePHP 1.3原生MySQL驱动 'persistent' => false, 'host' => '', 'login' => '', 'password' => '', 'database' => 'RP', 'prefix' => '', 'encoding' => 'utf8', // 建议启用编码配置避免乱码 ); }
2. Docker环境PHP扩展适配
方案A:使用PHP 5.x镜像(最省心)
CakePHP 1.3原生适配PHP 5.x,直接使用php:5.6-apache这类Docker镜像,默认自带mysql扩展,无需额外配置即可使用上述驱动。
方案B:适配PHP 7+环境
若必须使用PHP 7+版本,需做以下调整:
- 在Dockerfile中安装
mysqli扩展:RUN docker-php-ext-install mysqli - 下载适配CakePHP 1.3的
dbo_mysqli.php数据源文件,放置到项目的app/models/datasources/dbo/目录下,然后修改database.php的驱动为:'driver' => 'mysqli',
3. 确保Docker环境变量生效
在docker-compose.yml中添加env_file配置,让容器正确读取.env变量:
services: php: env_file: .env # 其他容器配置... mysql: # 数据库服务配置...
内容的提问来源于stack exchange,提问作者Arjun Rachakonda
相关产品推荐
相关产品推荐

