Skip to content
This repository has been archived by the owner on Jan 6, 2023. It is now read-only.

Call to undefined method DateTime::toISO8601Format() #542

Closed
blackdoginet opened this issue Oct 30, 2018 · 4 comments
Closed

Call to undefined method DateTime::toISO8601Format() #542

blackdoginet opened this issue Oct 30, 2018 · 4 comments
Labels
bug Something isn't working

Comments

@blackdoginet
Copy link

Bug Report

Steps to Reproduce

  1. Apply patches from commit 7245b7a to cloned suite due to previos issues
    Fixes if you have a table that has a field with CURRENT_TIMESTAMP you get error #531
    Ref: Error on login "Directus\Util\DateTimeUtils::createFromDateTime() must be an instance of DateTime" #532
    Ref: Datetime default value isn't formatted correctly #498

  2. Login get error

Expected Behavior

Actual Behavior

image

Other Context & Screenshots

public function toISO8601Format() is in DateTimeUtils.php

Technical Details

  • Device: dedicated Kimsufi server
  • OS: Debian GNU/Linux 9 (stretch)
  • Web Server: Apache/2.4.25 (Debian)
  • PHP Version:PHP 7.0.30-0+deb9u1
  • Database: 10.1.26-MariaDB
  • Install Method: cloned master suite and patched commit 7245b7a

Error log
[2018-10-30 04:16:40] api[_].ERROR: Error: Call to undefined method DateTime::toISO8601Format() in /home/directus/src/core/Directus/Database/Schema/SchemaManager.php:569 Stack trace: #0 /home/directus/src/core/Directus/Database/Schema/SchemaManager.php(269): Directus\Database\Schema\SchemaManager->createFieldFromArray(Array) #1 /home/directus/src/core/Directus/Database/Schema/SchemaManager.php(144): Directus\Database\Schema\SchemaManager->getFields('civicrm_contact', Array, false) #2 /home/directus/src/core/Directus/Services/TablesService.php(1447): Directus\Database\Schema\SchemaManager->getCollection('civicrm_contact') #3 /home/directus/src/core/Directus/Services/TablesService.php(1307): Directus\Services\TablesService->mergeSchemaCollection('civicrm_contact', Array) #4 /home/directus/src/core/Directus/Services/TablesService.php(66): Directus\Services\TablesService->mergeMissingSchemaCollections(Array, Array) #5 /home/directus/src/endpoints/Collections.php(58): Directus\Services\TablesService->findAll(Array) #6 [internal function]: Directus\Api\Routes\Collections->all(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Array) #7 /home/directus/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php(41): call_user_func(Array, Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Array) #8 /home/directus/vendor/slim/slim/Slim/Route.php(356): Slim\Handlers\Strategies\RequestResponse->__invoke(Array, Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Array) #9 /home/directus/src/core/Directus/Application/Http/Middleware/AbstractRateLimitMiddleware.php(34): Slim\Route->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #10 [internal function]: Directus\Application\Http\Middleware\AbstractRateLimitMiddleware->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Slim\Route)) #11 /home/directus/vendor/slim/slim/Slim/DeferredCallable.php(43): call_user_func_array(Object(Directus\Application\Http\Middleware\UserRateLimitMiddleware), Array) #12 [internal function]: Slim\DeferredCallable->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Slim\Route)) #13 /home/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Slim\Route)) #14 /home/directus/src/core/Directus/Application/Http/Middleware/AuthenticationMiddleware.php(80): Slim\Route->Slim\{closure}(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #15 [internal function]: Directus\Application\Http\Middleware\AuthenticationMiddleware->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #16 /home/directus/vendor/slim/slim/Slim/DeferredCallable.php(43): call_user_func_array(Object(Directus\Application\Http\Middleware\AuthenticationMiddleware), Array) #17 [internal function]: Slim\DeferredCallable->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #18 /home/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #19 /home/directus/src/core/Directus/Application/Http/Middleware/TableGatewayMiddleware.php(25): Slim\Route->Slim\{closure}(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #20 [internal function]: Directus\Application\Http\Middleware\TableGatewayMiddleware->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #21 /home/directus/vendor/slim/slim/Slim/DeferredCallable.php(43): call_user_func_array(Object(Directus\Application\Http\Middleware\TableGatewayMiddleware), Array) #22 [internal function]: Slim\DeferredCallable->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #23 /home/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #24 /home/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\Route->Slim\{closure}(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #25 /home/directus/vendor/slim/slim/Slim/Route.php(334): Slim\Route->callMiddlewareStack(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #26 /home/directus/vendor/slim/slim/Slim/App.php(515): Slim\Route->run(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #27 /home/directus/src/core/Directus/Application/Http/Middleware/AbstractRateLimitMiddleware.php(34): Slim\App->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #28 [internal function]: Directus\Application\Http\Middleware\AbstractRateLimitMiddleware->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Directus\Application\Application)) #29 /home/directus/vendor/slim/slim/Slim/DeferredCallable.php(43): call_user_func_array(Object(Directus\Application\Http\Middleware\IpRateLimitMiddleware), Array) #30 [internal function]: Slim\DeferredCallable->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Directus\Application\Application)) #31 /home/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Directus\Application\Application)) #32 /home/directus/vendor/akrabat/rka-ip-address-middleware/src/IpAddress.php(93): Slim\App->Slim\{closure}(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #33 [internal function]: RKA\Middleware\IpAddress->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #34 /home/directus/vendor/slim/slim/Slim/DeferredCallable.php(43): call_user_func_array(Object(RKA\Middleware\IpAddress), Array) #35 [internal function]: Slim\DeferredCallable->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #36 /home/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #37 /home/directus/src/core/Directus/Application/Http/Middleware/CorsMiddleware.php(66): Slim\App->Slim\{closure}(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #38 [internal function]: Directus\Application\Http\Middleware\CorsMiddleware->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #39 /home/directus/vendor/slim/slim/Slim/DeferredCallable.php(43): call_user_func_array(Object(Directus\Application\Http\Middleware\CorsMiddleware), Array) #40 [internal function]: Slim\DeferredCallable->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #41 /home/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #42 /home/directus/src/core/Directus/Application/Http/Middleware/ResponseCacheMiddleware.php(47): Slim\App->Slim\{closure}(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #43 [internal function]: Directus\Application\Http\Middleware\ResponseCacheMiddleware->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #44 /home/directus/vendor/slim/slim/Slim/DeferredCallable.php(43): call_user_func_array(Object(Directus\Application\Http\Middleware\ResponseCacheMiddleware), Array) #45 [internal function]: Slim\DeferredCallable->__invoke(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #46 /home/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(70): call_user_func(Object(Slim\DeferredCallable), Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response), Object(Closure)) #47 /home/directus/vendor/slim/slim/Slim/MiddlewareAwareTrait.php(117): Slim\App->Slim\{closure}(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #48 /home/directus/vendor/slim/slim/Slim/App.php(406): Slim\App->callMiddlewareStack(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #49 /home/directus/vendor/slim/slim/Slim/App.php(314): Slim\App->process(Object(Directus\Application\Http\Request), Object(Directus\Application\Http\Response)) #50 /home/directus/src/core/Directus/Application/Application.php(161): Slim\App->run(false) #51 /home/directus/public/index.php(5): Directus\Application\Application->run() #52 {main} [] []

blackdoginet referenced this issue Oct 30, 2018
When a datetime field has an invalid default value such as CURRENT_TIMESTAMP, the API will try to conver this into a ISO format, which cause error as this return FALSE because it's not a valid datetime format

Fixes #531
Ref: #532
Ref: #498
@benhaynes benhaynes added the bug Something isn't working label Oct 30, 2018
@benhaynes benhaynes added this to Needs triage in Bug Triage via automation Oct 30, 2018
@daniel-upzzle
Copy link

See this pull request:

#547

@daniel-upzzle
Copy link

I don't know if it can help.

@wellingguzman
Copy link
Contributor

Thanks @blackdoginet for reporting this bug, I will be looking into this shortly.

@wellingguzman wellingguzman moved this from Needs triage to Critical in Bug Triage Oct 31, 2018
@wellingguzman wellingguzman added this to To do in v2.0.5 Oct 31, 2018
@wellingguzman wellingguzman moved this from To do to In progress in v2.0.5 Oct 31, 2018
Bug Triage automation moved this from Critical to Closed Oct 31, 2018
v2.0.5 automation moved this from In progress to Done Oct 31, 2018
@wellingguzman
Copy link
Contributor

This bug has been fixed by 02ac62f

samvasko pushed a commit to samvasko/api that referenced this issue Nov 25, 2019
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
Bug Triage
  
Closed
v2.0.5
  
Done
Development

No branches or pull requests

4 participants