Invalid configuration error when trying to access dev/tasks

Silverstripe Version: SS5.3

Question:

I have the SilverStripe Cloudinary module (GitHub - MadeHQ/silverstripe-cloudinary: SilverStripe Module. Replaces SilverStripe's inbuilt asset management with Cloudinary.) set up and it’s working great. Only trouble is I get an error when trying to run dev/tasks:

[Emergency] Uncaught Cloudinary\Exception\ConfigurationException: Invalid configuration, please set up your environment…

Line 293 in /var/www/html/vendor/cloudinary/cloudinary_php/src/Configuration/Configuration.php
throw new ConfigurationException(‘Invalid configuration, please set up your environment’);

I have my config set up in yml as per the documentation:

MadeHQ\Cloudinary:
    cloud_name: 'example_cloud_name'
    api_key: 'my_api_key'
    api_secret: 'my_api_secret'

I know the config is correct as I am able to access my Cloudinary account via the CMS and attach images etc just fine.

It seems to me that when trying to access dev/tasks, the config has not yet been set? How do I get dev/tasks to read the config? This is a major issue for me, as it is also preventing me from running cron jobs via sake dev/tasks/ProcessJobQueueTask.

I have entered the bug for the module here: Error when trying to access dev/tasks · Issue #199 · MadeHQ/silverstripe-cloudinary · GitHub

Is it possible to suppress that error when accessing dev/tasks? The module is not required for queuing or running tasks.

Any help or suggestions in the meantime would be much appreciated!

Without seeing a stack trace for the exception it’ll be hard to give any advice as to whether (let alone how) you could avoid executing the buggy code during a dev/build. Can you please provide a stack trace?

Also: did you flush after modifying the configuration?

yes multiple times. No change after /dev/build?flush=all. Note that /dev/build runs fine, /dev/tasks gets error.

Can you please copy/paste instead of using a screenshot - and make sure you include the full stack trace? It looks like there’s probably two errors there.

I’ve set Backtrace::backtrace(); in my _config.php - I assume this is what you meant by full stack trace?

Here’s the copied and pasted result:

require_once(/var/www/html/app/_config.php) 
Module.php:236
SilverStripe\Core\Manifest\requireFile(/var/www/html/app/_config.php) 
Module.php:186
SilverStripe\Core\Manifest\Module->activate() 
ModuleManifest.php:152
SilverStripe\Core\Manifest\ModuleManifest->activateConfig() 
BaseKernel.php:224
SilverStripe\Core\BaseKernel->bootConfigs() 
CoreKernel.php:36
SilverStripe\Core\CoreKernel->boot() 
HTTPApplication.php:132
SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure}(SilverStripe\Control\HTTPRequest) 
HTTPMiddlewareAware.php:65
SilverStripe\Control\HTTPApplication->callMiddleware(SilverStripe\Control\HTTPRequest, Closure) 
HTTPApplication.php:130
SilverStripe\Control\HTTPApplication->execute(SilverStripe\Control\HTTPRequest, Closure, ) 
HTTPApplication.php:113
SilverStripe\Control\HTTPApplication->handle(SilverStripe\Control\HTTPRequest) 
index.php:33
[Emergency] Uncaught Cloudinary\Exception\ConfigurationException: Invalid configuration, please set up your environment
GET /dev/tasks/

Line 293 in /var/www/html/vendor/cloudinary/cloudinary_php/src/Configuration/Configuration.php
Source

284     {
285         $this->importJson($otherConfig->jsonSerialize());
286 
287         return $this;
288     }
289 
290     public function validate()
291     {
292         if (empty($this->cloud->cloudName)) {
293             throw new ConfigurationException('Invalid configuration, please set up your environment');
294         }
295     }
296 
297     /**
298      * Serialises Configuration to Cloudinary url
299      *
Trace

Cloudinary\Configuration\Configuration->validate 
Cloudinary.php:59
Cloudinary\Cloudinary->__construct 
InjectionCreator.php:35
SilverStripe\Core\Injector\InjectionCreator->create 
Injector.php:631
SilverStripe\Core\Injector\Injector->instantiate 
Injector.php:1027
SilverStripe\Core\Injector\Injector->getNamedService 
Injector.php:979
SilverStripe\Core\Injector\Injector->get 
Injector.php:521
SilverStripe\Core\Injector\Injector->convertServiceProperty 
Injector.php:513
SilverStripe\Core\Injector\Injector->convertServiceProperty 
Injector.php:497
SilverStripe\Core\Injector\Injector->updateSpecConstructor 
Injector.php:1023
SilverStripe\Core\Injector\Injector->getNamedService 
Injector.php:979
SilverStripe\Core\Injector\Injector->get 
TaskRunner.php:184
SilverStripe\Dev\TaskRunner->taskEnabled 
TaskRunner.php:165
SilverStripe\Dev\TaskRunner->getTaskList 
TaskRunner.php:141
SilverStripe\Dev\TaskRunner->getTasks 
QueuedTaskRunner.php:82
Symbiote\QueuedJobs\Controllers\QueuedTaskRunner->index 
RequestHandler.php:321
SilverStripe\Control\RequestHandler->handleAction 
Controller.php:274
SilverStripe\Control\Controller->handleAction 
RequestHandler.php:200
SilverStripe\Control\RequestHandler->handleRequest 
Controller.php:200
SilverStripe\Control\Controller->handleRequest 
RequestHandler.php:224
SilverStripe\Control\RequestHandler->handleRequest 
Controller.php:200
SilverStripe\Control\Controller->handleRequest 
Director.php:348
SilverStripe\Control\Director->SilverStripe\Control\{closure} 
SEORequestProcessor.php:78
SilverStripers\SEO\Control\SEORequestProcessor->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
VersionedHTTPMiddleware.php:41
SilverStripe\Versioned\VersionedHTTPMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
LoginSessionMiddleware.php:56
SilverStripe\SessionManager\Middleware\LoginSessionMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
ConfirmationMiddleware.php:254
SilverStripe\Control\Middleware\ConfirmationMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
PasswordExpirationMiddleware.php:84
SilverStripe\Security\PasswordExpirationMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
BasicAuthMiddleware.php:68
SilverStripe\Security\BasicAuthMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
AuthenticationMiddleware.php:61
SilverStripe\Security\AuthenticationMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
ExecMetricMiddleware.php:20
SilverStripe\Control\Middleware\ExecMetricMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
GTagMiddleware.php:46
DorsetDigital\SimpleGTag\GTagMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
EmailObfuscator.php:37
Axllent\EmailObfuscator\Control\Middleware\EmailObfuscator->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
CanonicalURLMiddleware.php:245
SilverStripe\Control\Middleware\CanonicalURLMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
HTTPCacheControlMiddleware.php:39
SilverStripe\Control\Middleware\HTTPCacheControlMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
ChangeDetectionMiddleware.php:28
SilverStripe\Control\Middleware\ChangeDetectionMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
FlushMiddleware.php:30
SilverStripe\Control\Middleware\FlushMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
SessionMiddleware.php:20
SilverStripe\Control\Middleware\SessionMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
AllowedHostsMiddleware.php:60
SilverStripe\Control\Middleware\AllowedHostsMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
TrustedProxyMiddleware.php:176
SilverStripe\Control\Middleware\TrustedProxyMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
DebugBarMiddleware.php:17
LeKoala\DebugBar\Middleware\DebugBarMiddleware->process 
HTTPMiddlewareAware.php:62
SilverStripe\Control\Director->SilverStripe\Control\Middleware\{closure} 
HTTPMiddlewareAware.php:65
SilverStripe\Control\Director->callMiddleware 
Director.php:357
SilverStripe\Control\Director->handleRequest 
HTTPApplication.php:114
SilverStripe\Control\HTTPApplication::SilverStripe\Control\{closure} 
call_user_func 
HTTPApplication.php:137
SilverStripe\Control\HTTPApplication->SilverStripe\Control\{closure} 
HTTPMiddlewareAware.php:65
SilverStripe\Control\HTTPApplication->callMiddleware 
HTTPApplication.php:130
SilverStripe\Control\HTTPApplication->execute 
HTTPApplication.php:113
SilverStripe\Control\HTTPApplication->handle 
index.php:33

That is not what I meant. I meant include the full backtrace that the error message provides to you, in text, rather than an image that shows a portion of it.

@GuySartorelli Ok. The above copied and pasted text is the entire error message trace provided by SilverStripe when I try to access mydomain/dev/tasks (withBacktrace::backtrace(); in my _config.php). As far as I can tell it’s only the one error. If this is not the full stack trace, please advise how to produce it.