# Fatal Error in fresh Laminas API Tools Skeleton installation

**URL:** https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393
**Category:** API Tools
**Created:** [July 5, 2021, 12:40pm UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393 "2021-07-05T12:40:43Z")
**Posts on this page:** 12
**Page:** 1

<div class="post-metadata">

### Author: ![ezkimo](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/ezkimo/32/781_2.png) [@ezkimo](https://discourse.laminas.dev/u/ezkimo)
#### Post date: [July 5, 2021, 12:40pm UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/1 "2021-07-05T12:40:43Z")

</div>

Hey there,

I 'm facing a problem with the Laminas API Tools skeleton. I was installing it via composer as described in the documentation. The composer installation process was fine. No error messages or other notices.

Technical background: Windows 10, XAMPP, PHP 8.0.0

When I tried to create a new api in the admin ui, the status said, that the api was created, but did not list the new api. The console stated the following fatal error:

> PHP Fatal error: Uncaught Error: Class “ZF\Apigility\Admin\Controller\InputFilter\ModuleInputFilter” not found in C:\xampp\htdocs\api-tools\vendor\laminas\laminas-servicemanager\src\Factory\InvokableFactory.php:33  
> Stack trace:  
> #0C:\xampp\htdocs\api-tools\vendor\laminas\laminas-servicemanager\src\ServiceManager.php(665): Laminas\ServiceManager\Factory\InvokableFactory-\>\_\_invoke(Object(Laminas\ServiceManager\ServiceManager), ‘ZF\Apigility\Ad…’, NULL)  
> #1 C:\xampp\htdocs\api-tools\vendor\laminas\laminas-servicemanager\src\ServiceManager.php(230): Laminas\ServiceManager\ServiceManager-\>doCreate(‘ZF\Apigility\Ad…’)  
> #2 C:\xampp\htdocs\api-tools\vendor\laminas\laminas-servicemanager\src\AbstractPluginManager.php(174): Laminas\ServiceManager\ServiceManager-\>get(‘ZF\Apigility\Ad…’)  
> #3 C:\xampp\htdocs\api-tools\vendor\laminas-api-tools\api-tools-content-validation\src\ContentValidationListener.php(509): Laminas\ServiceManager\AbstractPluginManager-\>get(‘ZF\Apigility\Ad…’)  
> #4 C:\xampp\htdocs\api-tools\vendor\laminas-api-tools\api-tools-content-validation\src\ContentValidationListener.php(204): Laminas\ApiTools\ContentValidation\ContentValidationListener-\>hasInputFilter(‘ZF\Apigility\Ad…’)  
> #5 C:\xampp\htdocs\api-tools\vendor\laminas\laminas-eventmanager\src\EventManager.php(331): Laminas\ApiTools\ContentValidation\ContentValidationListener-\>onRoute(Object(Laminas\Mvc\MvcEvent))  
> #6 C:\xampp\htdocs\api-tools\vendor\laminas\laminas-eventmanager\src\EventManager.php(188): Laminas\EventManager\EventManager-\>triggerListeners(Object(Laminas\Mvc\MvcEvent), Object(Closure))  
> #7 C:\xampp\htdocs\api-tools\vendor\laminas\laminas-mvc\src\Application.php(310): Laminas\EventManager\EventManager-\>triggerEventUntil(Object(Closure), Object(Laminas\Mvc\MvcEvent))  
> #8 C:\xampp\htdocs\api-tools\public\index.php(60): Laminas\Mvc\Application-\>run()  
> #9 {main}  
> thrown inC:\xampp\htdocs\api-tools\vendor\laminas\laminas-servicemanager\src\Factory\InvokableFactory.php on line 33

Looks like composer was not installing all dependencies. The whole `ZF\Apigility` namespace leads to nowhere. I don 't understand, why the apigility namesapce is existing in the current laminas api tools. There are no dependencies in the several composer.json files.

Why this error is occuring? Does anyone facing this, too?

---

<div class="post-metadata">

### Author: ![froschdesign](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/froschdesign/32/38_2.png) [@froschdesign](https://discourse.laminas.dev/u/froschdesign)
#### Post date: [July 5, 2021, 1:32pm UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/2 "2021-07-05T13:32:47Z")

</div>

> [@ezkimo](#):
>
> The whole `ZF\Apigility` namespace leads to nowhere. I don 't understand, why the apigility namesapce is existing in the current laminas api tools.

Only for legacy reasons but not needed in a fresh installation.

Please check the related issue report, maybe you can also help:

> <https://github.com/laminas-api-tools/api-tools-admin/issues/71>
>
> \<!--
> Before reporting a BC break, please consult the CHANGELOG to make sure it'…s not
> an expected change by checking the CHANGELOG.md file in this repository.
> \--\>
> 
> \### BC Break Report
> 
> 
> 
> | Q | A
> |------------ | ------
> | Version | 1.10.0
> 
> \#### Summary
> 
> After upgrading to 1.10.0 from 1.9.0 I want to create a RPC service from the UI and launch me that error. I think there is some error in the aliases config. When I inspect with PhpStorm the new vendor/laminas-api-tools/api-tools-admin/config/module.config.php it cant resolve the PostInputFilter location.
> 
> \#### Previous behavior
> 
> Create RPC services without error.
> 
> \#### Current behavior
> 
> Can't create RPC services from api tools admin ui.
> 
> \#### How to reproduce
> 
> \<!--
> With api-tools-admin 1.10.0 try to create RPC services from de UI with laminas-api-tools/api-tools: 1.5.0 version
> \--\>

---

<div class="post-metadata">

### Author: ![ezkimo](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/ezkimo/32/781_2.png) [@ezkimo](https://discourse.laminas.dev/u/ezkimo)
#### Post date: [July 5, 2021, 6:17pm UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/3 "2021-07-05T18:17:36Z")

</div>

Thanks for the explaination of the legacy. A closer look at the php files in conjunction with your hints has brought some clarity.

Since the related issue report concerns more than one issue, I 'm using this thread to write down what I 've found so far concerning my issue.

The FQN in the exception is …  
`ZF\Apigility\Admin\Controller\InputFilter\ModuleInputFilter`

This FQN was never implemented since the `Controller` part in the namespace seems to be wrong. In the `module.config.php` file a legacy reference to `ZF\Apigility\Admin\InputFilter\ModuleInputFilter` is mentioned. So I guess somewhere in the code the wrong FQN is called and results in a service manager exception.

---

<div class="post-metadata">

### Author: ![ezkimo](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/ezkimo/32/781_2.png) [@ezkimo](https://discourse.laminas.dev/u/ezkimo)
#### Post date: [July 6, 2021, 12:29pm UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/4 "2021-07-06T12:29:33Z")

</div>

For reasons I don’t understand, a few namespaces in the module.config.php (`laminas-api-tools/api-tools-admin/config/module.config.php`) file get mixed up.

It all begins in line [1839](https://github.com/laminas-api-tools/api-tools-admin/blob/eb4091f81888bb5ac8dc979fe25f04e9db62ff22/config/module.config.php#L1839). where the alias `InputFilter\Module::class` is mentioned. This leads directly to line [1765](https://github.com/laminas-api-tools/api-tools-admin/blob/eb4091f81888bb5ac8dc979fe25f04e9db62ff22/config/module.config.php#L1765), where the alias definition for the fqn of this input filter is defined.

Normally the alias assignment should be `\Laminas\ApiTools\Admin\InputFilter\ModuleInputFilter`. But for some reason this one is resolved into `ZF\Apigility\Admin\Controller\InputFilter\ModuleInputFilter`. I cannot say why, because there 's no hint, why this is happening.

When I change the fqn from `InputFilter\ModuleInputFilter::class` to `\Laminas\ApiTools\Admin\InputFilter\ModuleInputFilter::class` it runs perfectly. The lines 1765, 1795 and 1812 are affected. Never the less I 'll keep an eye on it, because this one is somehow curios.

---

<div class="post-metadata">

### Author: ![ezkimo](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/ezkimo/32/781_2.png) [@ezkimo](https://discourse.laminas.dev/u/ezkimo)
#### Post date: [July 6, 2021, 2:30pm UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/5 "2021-07-06T14:30:36Z")

</div>

Same behaviour on the other input filter config entries. As long as the entries are noted as `InputFilter\ClassName::class` it results into `ZF\Apigility\Admin\Controller\InputFilter\ClassName`. If the fqn is fully written as `\Laminas\ApiTools\Admin\InputFilter\ClassName::class` it works fine.

I have not yet been able to find the cause of this namespace behaviour. The above shown solution is just a hotfix for one of my clients.

---

<div class="post-metadata">

### Author: ![omars](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/omars/32/1067_2.png) [@omars](https://discourse.laminas.dev/u/omars)
#### Post date: [July 6, 2021, 2:40pm UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/6 "2021-07-06T14:40:22Z")

</div>

I’m having the same issue

```auto
[Tue Jul 6 09:57:30 2021] PHP Fatal error: Uncaught Error: Class 'ZF\Apigility\Admin\Controller\InputFilter\ModuleInputFilter' not found in /home/omar/workspace/php/lamskel/vendor/laminas/laminas-servicemanager/src/Factory/InvokableFactory.php:33
Stack trace:
#0 /home/omar/workspace/php/lamskel/vendor/laminas/laminas-servicemanager/src/ServiceManager.php(665): Laminas\ServiceManager\Factory\InvokableFactory->__invoke()
#1 /home/omar/workspace/php/lamskel/vendor/laminas/laminas-servicemanager/src/ServiceManager.php(230): Laminas\ServiceManager\ServiceManager->doCreate()
#2 /home/omar/workspace/php/lamskel/vendor/laminas/laminas-servicemanager/src/AbstractPluginManager.php(174): Laminas\ServiceManager\ServiceManager->get()
#3 /home/omar/workspace/php/lamskel/vendor/laminas-api-tools/api-tools-content-validation/src/ContentValidationListener.php(509): Laminas\ServiceManager\AbstractPluginManager->get()
#4 /home/omar/workspace/php/lamskel/vendor/laminas-api-tools/api-tools-content-validation/src/ContentValidationListener.php(204): Laminas\ApiTools\Content in /home/omar/workspace/php/lamskel/vendor/laminas/laminas-servicemanager/src/Factory/InvokableFactory.php on line 33

```

---

<div class="post-metadata">

### Author: ![omars](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/omars/32/1067_2.png) [@omars](https://discourse.laminas.dev/u/omars)
#### Post date: [July 7, 2021, 8:25am UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/7 "2021-07-07T08:25:21Z")

</div>

Is there an alternative skeleton ?

---

<div class="post-metadata">

### Author: ![froschdesign](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/froschdesign/32/38_2.png) [@froschdesign](https://discourse.laminas.dev/u/froschdesign)
#### Post date: [July 7, 2021, 8:47am UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/8 "2021-07-07T08:47:57Z")

</div>

You can use an earlier version until the problem is solved.

---

<div class="post-metadata">

### Author: ![ezkimo](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/ezkimo/32/781_2.png) [@ezkimo](https://discourse.laminas.dev/u/ezkimo)
#### Post date: [July 7, 2021, 8:51am UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/9 "2021-07-07T08:51:28Z")

</div>

> Is there an alternative skeleton ?

I guess not. The issue isn 't the skeleton itself. The bug exists in the [laminas-api-tools](https://github.com/laminas-api-tools) / **[api-tools-admin](https://github.com/laminas-api-tools/api-tools-admin)** repository. In detail the problem is located in line 164 of the module.config.php file.

> <https://github.com/laminas-api-tools/api-tools-admin/blob/eb4091f81888bb5ac8dc979fe25f04e9db62ff22/config/module.config.php#L164>

Before this use statement the notation of `InputFilter\ModuleInputFilter::class` or `InputFilter\ModuleInputFilter::class` refers to the `Laminas\ApiTools\Admin` namespace, so that those two combine together to `\Laminas\ApiTools\Admin\InputFilter\ModuleInputFilter`. After the use statement in line 164 the notation of `InputFilter\ModuleInputFilter` just extends `ZF\Apigility\Admin\Controller\InputFilter` to `ZF\Apigility\Admin\Controller\InputFilter\ModuleInputFilter`.

So this issue is caused by a mixup of different namespaces and how they work together. This bug could be fixed by omitting the use statements and simply writing out FQN in full within the configuration, or simply using aliases for the legacy use statements so that conflicts with namespaces can be excluded.

---

<div class="post-metadata">

### Author: ![omars](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/omars/32/1067_2.png) [@omars](https://discourse.laminas.dev/u/omars)
#### Post date: [July 7, 2021, 8:56am UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/10 "2021-07-07T08:56:04Z")

</div>

OK, I’m trying 1.5.3 now

---

<div class="post-metadata">

### Author: ![froschdesign](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/froschdesign/32/38_2.png) [@froschdesign](https://discourse.laminas.dev/u/froschdesign)
#### Post date: [July 7, 2021, 8:56am UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/11 "2021-07-07T08:56:12Z")

</div>

> [@ezkimo](#):
>
> Before this use statement the notation of `InputFilter\ModuleInputFilter::class` or `InputFilter\ModuleInputFilter::class` refers to the `Laminas\ApiTools\Admin` namespace, so that those two combine together to `\Laminas\ApiTools\Admin\InputFilter\ModuleInputFilter`. After the use statement in line 164 the notation of `InputFilter\ModuleInputFilter` just extends `ZF\Apigility\Admin\Controller\InputFilter` to `ZF\Apigility\Admin\Controller\InputFilter\ModuleInputFilter`.

Good catch! 👍🏼

Can you create a pull request on [laminas-api-tools/api-tools-admin](https://github.com/laminas-api-tools/api-tools-admin)?

---

<div class="post-metadata">

### Author: ![omars](https://yyz2.discourse-cdn.com/flex032/user_avatar/discourse.laminas.dev/omars/32/1067_2.png) [@omars](https://discourse.laminas.dev/u/omars)
#### Post date: [July 7, 2021, 9:07am UTC](https://discourse.laminas.dev/t/fatal-error-in-fresh-laminas-api-tools-skeleton-installation/2393/13 "2021-07-07T09:07:44Z")

</div>

So a solution for now is  
composer require -W laminas-api-tools/api-tools-admin 1.9.0

As this bug is introduced from 1.10.0, and beyond
