# Migrating Laminas MVC to php8.2 and doctrine error

**URL:** <https://discourse.laminas.dev/t/migrating-laminas-mvc-to-php8-2-and-doctrine-error/3459>\
**Category:** 3rd-Party Tools & Libraries\
**Tags:** laminas-mvc, doctrine\
**Created:** [September 5, 2023, 11:29pm UTC](https://discourse.laminas.dev/t/migrating-laminas-mvc-to-php8-2-and-doctrine-error/3459 "2023-09-05T23:29:19Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![tokstar](https://avatars.discourse-cdn.com/v4/letter/t/258eb7/32.png) [@tokstar](https://discourse.laminas.dev/u/tokstar)\
**Post date:** [September 5, 2023, 11:29pm UTC](https://discourse.laminas.dev/t/migrating-laminas-mvc-to-php8-2-and-doctrine-error/3459/1 "2023-09-05T23:29:19Z")

</div>

Hello I am struggling to solve this error for hours now, I have working website originally build with Zend version2, and migrated to Laminas MVC on PHP7.2. Everything was fine with Doctrine module and etc. Now we are upgrading to PHP8.2.

This line in controller factory started throwing error, and says “DoctrineModule\Cache\LaminasStorageCache::\_\_construct(): Argument #1 ($storage) must be of type Laminas\Cache\Storage\StorageInterface, string given, called in /pojectpath/vendor/doctrine/doctrine-module/src/Service/CacheFactory.php on line 63”

```auto
$entityManager = $container->get('doctrine.entitymanager.orm_default');

```

in composer.json, I have these installed.

```auto
        "laminas/laminas-component-installer": "^3.2",
        "laminas/laminas-development-mode": "^3.10",
        "laminas/laminas-skeleton-installer": "^1.2",
        "laminas/laminas-mvc": "^3.6.0",
        "laminas/laminas-mail": "^2.23",
        "laminas/laminas-db": "^2.18",
        "laminas/laminas-mvc-i18n": "^1.7",
        "laminas/laminas-serializer": "^2.16",
        "laminas/laminas-paginator": "^2.17",
        "laminas/laminas-inputfilter": "^2.27",
        "laminas/laminas-hydrator": "^4.14",
        "laminas/laminas-session": "^2.16",
        "laminas/laminas-form": "^3.13",
        "laminas/laminas-authentication": "^2.15",
        "doctrine/doctrine-orm-module": "^6.0",
        "doctrine/migrations": "^3.6",
        "laminas/laminas-cache-storage-adapter-blackhole": "^2.3"

```

Please let me know how to solve this issue. Many thanks.

---

<div class="post-metadata">

**Author:** ![tokstar](https://avatars.discourse-cdn.com/v4/letter/t/258eb7/32.png) [@tokstar](https://discourse.laminas.dev/u/tokstar)\
**Post date:** [September 6, 2023, 12:43am UTC](https://discourse.laminas.dev/t/migrating-laminas-mvc-to-php8-2-and-doctrine-error/3459/2 "2023-09-06T00:43:21Z")

</div>

somehow I could solve it so let me share my issues.

I have several issues layered underneath,  
1 : I had to change config/local or global.php, udpate strucrure of cache and FilesystemCache.  
2 : added more dependencies. here is my latest composer.json

```auto
        "laminas/laminas-component-installer": "^3.2",
        "laminas/laminas-development-mode": "^3.10",
        "laminas/laminas-skeleton-installer": "^1.2",
        "laminas/laminas-mvc": "^3.6.0",
        "laminas/laminas-mail": "^2.23",
        "laminas/laminas-db": "^2.18",
        "laminas/laminas-mvc-i18n": "^1.7",
        "laminas/laminas-serializer": "^2.16",
        "laminas/laminas-paginator": "^2.17",
        "laminas/laminas-inputfilter": "^2.27",
        "laminas/laminas-hydrator": "^4.14",
        "laminas/laminas-session": "^2.16",
        "laminas/laminas-form": "^3.13",
        "laminas/laminas-authentication": "^2.15",
        "doctrine/doctrine-orm-module": "^6.0",
        "doctrine/migrations": "^3.6",
        "laminas/laminas-cache-storage-adapter-blackhole": "^2.3",
        "laminas/laminas-cache": "^3.11",
        "doctrine/dbal": "^3.6"

```

3 : Then I got new error says “The given ‘driverClass’ Doctrine\DBAL\Driver\PDOMySql\Driver has to implement the Doctrine\DBAL\Driver interface”. Then I realize, DBAL path is changed. I had it

```auto
use Doctrine\DBAL\Driver\PDOMySql\Driver

```

but it has to be

```auto
use Doctrine\DBAL\Driver\PDO\MySql\Driver

```

Then all works on php8.2.

---

<div class="post-metadata">

**Author:** ![tokstar](https://avatars.discourse-cdn.com/v4/letter/t/258eb7/32.png) [@tokstar](https://discourse.laminas.dev/u/tokstar)\
**Post date:** [September 11, 2023, 3:46am UTC](https://discourse.laminas.dev/t/migrating-laminas-mvc-to-php8-2-and-doctrine-error/3459/3 "2023-09-11T03:46:48Z")

</div>

Sorry for making mess. I thought I had solve issues but I guess I didn’t. Not sure how and why but it works fine on locally, but on server, I get error says

“vendor/laminas/laminas-servicemanager/src/ServiceManager.php:649”  
“Service with name “doctrine.connection.orm\_default” could not be created. Reason: The given ‘driverClass’ Doctrine\DBAL\Driver\PDOMySql\Driver has to implement the Doctrine\DBAL\Driver interface”  
and this is the driver in config/local.php

orm\_default’ =\> [  
‘driverClass’ =\> ‘Doctrine\DBAL\Driver\PDO\MySql\Driver’,  
]

I am using Plesk and PHP8.2. If anyone knows how to solve this issue, please let me know. Many thanks!!

---

<div class="post-metadata">

**Author:** ![tokstar](https://avatars.discourse-cdn.com/v4/letter/t/258eb7/32.png) [@tokstar](https://discourse.laminas.dev/u/tokstar)\
**Post date:** [September 11, 2023, 5:15am UTC](https://discourse.laminas.dev/t/migrating-laminas-mvc-to-php8-2-and-doctrine-error/3459/4 "2023-09-11T05:15:22Z")

</div>

It was my typo. On local mac isn’t case sensitive. That’s why uploaded to Linux server, and stopped working.

this isn’t working

```auto
use Doctrine\DBAL\Driver\PDO\MySql\Driver;

```

this is working.

```auto
use Doctrine\DBAL\Driver\PDO\MySQL\Driver;

```

---

<div class="post-metadata">

**Author:** ![tokstar](https://avatars.discourse-cdn.com/v4/letter/t/258eb7/32.png) [@tokstar](https://discourse.laminas.dev/u/tokstar)\
**Post date:** [September 19, 2023, 3:36am UTC](https://discourse.laminas.dev/t/migrating-laminas-mvc-to-php8-2-and-doctrine-error/3459/5 "2023-09-19T03:36:49Z")

</div>

just so share, found document about dbal path change on v3.6

> <https://github.com/doctrine/dbal/blob/3.6.x/UPGRADE.md>

- `PDOMySql\Driver` → `PDO\MySQL\Driver`
- `PDOOracle\Driver` → `PDO\OCI\Driver`
- `PDOPgSql\Driver` → `PDO\PgSQL\Driver`
- `PDOSqlite\Driver` → `PDO\SQLite\Driver`
- `PDOSqlsrv\Driver` → `PDO\SQLSrv\Driver`
- `PDOSqlsrv\Connection` → `PDO\SQLSrv\Connection`
- `PDOSqlsrv\Statement` → `PDO\SQLSrv\Statement`
