Unable to resolve service ... to a factory

It has happened to me several times that when creating a module I get a message similar to this:
Unable to resolve service “Users \ Model \ UserTable” to a factory; are you certain you provided it during configuration?
Sometimes I have managed to solve it but not the last.
If anyone could help me out with the analysis method to solve it, I will be very grateful.


Add (or modify) this to module.config.php

'service_manager' => [
    'factories' => [
        Users\Model\UserTable::class => Laminas\ServiceManager\Factory\InvokableFactory::class,

In case your UserTable requires custom factory just replace InvokableFactory with your factory.

Hello and Greetings to the Laminas Community (my first post),

I came to this post, as I am following the in-depth-tutorial to get into Laminas, and I am stuck on this very
problem on the second page of the tutorial:


I checked the code multiple times, removed the cached files, tried the built-in webserver and apache-deployment, no difference. I found the following stack-overflow Post (which originally was way before the migration to laminas) which did not get resolved:

The stacktrace:




    Unable to resolve service "Blog\Controller\ListController" to a factory; are you certain you provided it during configuration?

Stack trace:

    #0 /home/magellan/edv/programming/php/laminas/skeleton-app/vendor/laminas/laminas-servicemanager/src/ServiceManager.php(764): Laminas\ServiceManager\ServiceManager->getFactory('Blog\\Controller...')
    #1 /home/magellan/edv/programming/php/laminas/skeleton-app/vendor/laminas/laminas-servicemanager/src/ServiceManager.php(201): Laminas\ServiceManager\ServiceManager->doCreate('Blog\\Controller...')
    #2 /home/magellan/edv/programming/php/laminas/skeleton-app/vendor/laminas/laminas-servicemanager/src/AbstractPluginManager.php(153): Laminas\ServiceManager\ServiceManager->get('Blog\\Controller...')
    #3 /home/magellan/edv/programming/php/laminas/skeleton-app/vendor/laminas/laminas-mvc/src/DispatchListener.php(103): Laminas\ServiceManager\AbstractPluginManager->get('Blog\\Controller...')
    #4 /home/magellan/edv/programming/php/laminas/skeleton-app/vendor/laminas/laminas-eventmanager/src/EventManager.php(321): Laminas\Mvc\DispatchListener->onDispatch(Object(Laminas\Mvc\MvcEvent))
    #5 /home/magellan/edv/programming/php/laminas/skeleton-app/vendor/laminas/laminas-eventmanager/src/EventManager.php(178): Laminas\EventManager\EventManager->triggerListeners(Object(Laminas\Mvc\MvcEvent), Object(Closure))
    #6 /home/magellan/edv/programming/php/laminas/skeleton-app/vendor/laminas/laminas-mvc/src/Application.php(331): Laminas\EventManager\EventManager->triggerEventUntil(Object(Closure), Object(Laminas\Mvc\MvcEvent))
    #7 /home/magellan/edv/programming/php/laminas/skeleton-app/public/index.php(40): Laminas\Mvc\Application->run()
    #8 {main}

As I am entirely new to the Zend/Laminas World I can only guess: I noticed, that the Module.php
in the module/Blog/src/ Directory is in comparison to the finished base tutorial (Album) really short. The class just
returns the config file, whereas in the finished base (Album) tutorial the class implements
the ConfigProviderInterface and defines the methods getServiceConfig() and getControllerConfig().

I searched for a repository containing the actual PHP-code of the blog-tutorial but only found the markdown files.

Any hints in the matter would be greatly appreciated,

Thanks and regards

Hello and welcome to the forum! :smiley:

Please provide the content of your file module/Blog/config/module.config.php otherwise it’s hard to help here. :wink:

First of thanks for the fast reply. I figured out, why the whole thing failed, and it was
as expected a misconfiguration on my part: I tried
rebuilding the steps on a different machine and was warned on building the skeleton with
composer, that my php-version was not sufficient (Standard Ubuntu 7.2). I did not realize the
dependency as I originally build the skeleton for ZF3 and tried out the laminas-migration script,
and forgot about it afterwards. :flushed:
With the current PHP-Version everything works as expected and I am ready to dive deeper. :slight_smile:

I am sorry for the misunderstanding, but am glad to have had the opportunity to say hello.

So again, thanks for your helpfulness, and open-source commitment, I am looking forward to many
fruitfull laminas years…