Contao-Camp 2024
Ergebnis 1 bis 14 von 14

Thema: Fehler nach Update des Contao Managers auf 1.3.3 - Error 200 - unerwarteter API-Statu

  1. #1
    Contao-Fan Avatar von mdoll
    Registriert seit
    25.06.2009.
    Ort
    Wietze
    Beiträge
    338

    Standard Fehler nach Update des Contao Managers auf 1.3.3 - Error 200 - unerwarteter API-Statu

    Guten Morgen,

    ich wollte eben eine Contao Installation auf 4.9.8 updaten (und eigentlich noch eine Extension installieren), auf der der Contao Manager in der Version 1.3.0 lief.

    installierte Contao-Version: 4.9.7
    PHP: 7.4.10


    Nach dem Self-Update des CM erhalte ich die Fehlermeldung "Error 200 - Unerwarteter API-Status", gefolgt von einem längeren Codeblock. Jetzt kann ich den Contao Manager nicht mehr aufrufen, die Fehlermeldung liegt als Overlay darüber.

    Der Codeblock:
    Code:
    ) Contao Association
     *
     * @license LGPL-3.0-or-later
     */
    
    namespace Contao\ManagerApi\HttpKernel;
    
    use Contao\ManagerApi\Exception\ApiProblemException;
    use Crell\ApiProblem\ApiProblem;
    use Crell\ApiProblem\JsonException;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
    
    class ApiProblemResponse extends Response
    {
        /**
         * Constructor.
         */
        public function __construct(ApiProblem $problem, array $headers = [])
        {
            if (!$problem->getStatus()) {
                $problem->setStatus(500);
            }
    
            if (!$problem->getTitle()) {
                $code = $problem->getStatus();
                $problem->setTitle(isset(Response::$statusTexts[$code]) ? Response::$statusTexts[$code] : 'unknown status');
            }
    
            try {
                $content = $problem->asJson();
            } catch (JsonException $exception) {
                $problem = new ApiProblem($exception->getMessage());
                $content = $problem->asJson();
            }
    
            parent::__construct(
                $content,
                $problem->getStatus(),
                array_merge($headers, ['Content-Type' => 'application/problem+json'])
            );
        }
    
        /**
         * Creates a ApiProblemResponse from exception.
         */
        public static function createFromException(\Throwable $exception, bool $debug = false): self
        {
            $headers = [];
    
            if ($exception instanceof ApiProblemException) {
                $problem = $exception->getApiProblem();
            } else {
                $problem = new ApiProblem($exception->getMessage());
    
                if ($exception instanceof HttpExceptionInterface) {
                    $problem->setStatus($exception->getStatusCode());
                }
    
                if ($debug) {
                    $problem['debug'] = $exception->getTraceAsString();
                }
            }
    
            if ($exception instanceof HttpExceptionInterface) {
                $headers = $exception->getHeaders();
            }
    
            return new static($problem, $headers);
        }
    }
    ate static $checkedClasses = [];
        private static $final = [];
        private static $finalMethods = [];
        private static $deprecated = [];
        private static $internal = [];
        private static $internalMethods = [];
        private static $annotatedParameters = [];
        private static $darwinCache = ['/' => ['/', []]];
        private static $method = [];
        private static $returnTypes = [];
        private static $methodTraits = [];
        private static $fileOffsets = [];
    
        public function __construct(callable $classLoader)
        {
            $this->classLoader = $classLoader;
            $this->isFinder = \is_array($classLoader) && method_exists($classLoader[0], 'findFile');
            parse_str(getenv('SYMFONY_PATCH_TYPE_DECLARATIONS') ?: '', $this->patchTypes);
            $this->patchTypes += [
                'force' => null,
                'php' => null,
                'deprecations' => false,
            ];
    
            if (!isset(self::$caseCheck)) {
                $file = file_exists(__FILE__) ? __FILE__ : rtrim(realpath('.'), \DIRECTORY_SEPARATOR);
                $i = strrpos($file, \DIRECTORY_SEPARATOR);
                $dir = substr($file, 0, 1 + $i);
                $file = substr($file, 1 + $i);
                $test = strtoupper($file) === $file ? strtolower($file) : strtoupper($file);
                $test = realpath($dir.$test);
    
                if (false === $test || false === $i) {
                    // filesystem is case sensitive
                    self::$caseCheck = 0;
                } elseif (substr($test, -\strlen($file)) === $file) {
                    // filesystem is case insensitive and realpath() normalizes the case of characters
                    self::$caseCheck = 1;
                } elseif (false !== stripos(\PHP_OS, 'darwin')) {
                    // on MacOSX, HFS+ is case insensitive but realpath() doesn't normalize the case of characters
                    self::$caseCheck = 2;
                } else {
                    // filesystem case checks failed, fallback to disabling them
                    self::$caseCheck = 0;
                }
            }
        }
    
        /**
         * Gets the wrapped class loader.
         *
         * @return callable The wrapped class loader
         */
        public function getClassLoader(): callable
        {
            return $this->classLoader;
        }
    
        /**
         * Wraps all autoloaders.
         */
        public static function enable(): void
        {
            // Ensures we don't hit https://bugs.php.net/42098
            class_exists('Symfony\Component\ErrorHandler\ErrorHandler');
            class_exists('Psr\Log\LogLevel');
    
            if (!\is_array($functions = spl_autoload_functions())) {
                return;
            }
    
            foreach ($functions as $function) {
                spl_autoload_unregister($function);
            }
    
            foreach ($functions as $function) {
                if (!\is_array($function) || !$function[0] instanceof self) {
    Was muss ich machen, um den CM wieder nutzen zu können?

    Danke und Gruß
    Mathias
    “Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”
    ― Terry Pratchett, The Truth

  2. #2
    Wandelndes Contao-Lexikon Avatar von tab
    Registriert seit
    22.10.2013.
    Beiträge
    10.075
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Die alte contao-manager.phar.php löschen, contao-manager.phar neu runterladen und in contao-manager.phar.php umbenennen wird es wahrscheinlich schon beheben. Falls nicht, würde ich im Zweifelsfall das ganze Verzeichnis contao-manager löschen. Kann man sicher auch etwas zielgenauer machen, aber mehr als User und Passwort vom Contao-Manager gehen auch so nicht verloren. Hat man ja schnell wieder neu gesetzt.
    Geändert von tab (08.10.2020 um 12:21 Uhr)

  3. #3
    Contao-Fan Avatar von mdoll
    Registriert seit
    25.06.2009.
    Ort
    Wietze
    Beiträge
    338

    Standard

    Perfekt, Danke! Das hat funktioniert.

    Gruß
    Mathias
    “Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”
    ― Terry Pratchett, The Truth

  4. #4
    Contao-Nutzer
    Registriert seit
    01.06.2018.
    Beiträge
    104

    Standard

    Zitat Zitat von tab Beitrag anzeigen
    Die alte contao-manager.phar.php löschen, contao-manager.phar neu runterladen und in contao-manager.phar.php umbenennen wird es wahrscheinlich schon beheben. Falls nicht, würde ich im Zweifelsfall das ganze Verzeichnis contao-manager löschen. Kann man sicher auch etwas zielgenauer machen, aber mehr als User und Passwort vom Contao-Manager gehen auch so nicht verloren. Hat man ja schnell wieder neu gesetzt.
    Das funkzioniert ?
    Hat es noch jemand schon gemacht ???

  5. #5
    Contao-Nutzer
    Registriert seit
    18.06.2017.
    Beiträge
    219

    Standard

    Warum soll es nicht funktionieren wenn es so vorgeschlagen wird?

    Aber ja, erst gestern Abend gemacht

  6. #6
    Contao-Nutzer Avatar von Kahru
    Registriert seit
    20.06.2009.
    Ort
    Nordschwarzwald
    Beiträge
    200
    Partner-ID
    2067

    Standard

    Moin,

    also ich habe jetzt einen wo das mit dem Workaround nicht funktioniert. Vorher auch die 1.3.0, jetzt 1.3.3. PHP 7.4 bei all-inkl.

    Nachdem der Fehler aufgetaucht ist, habe ich wie vorgeschlagen das contao-manager.phar.php manuell hochgeladen und das Manager-Verzeichnis komplett gelöscht. Man kommt dann bis zur Neuvergabe von Username und Password. Das Contao-Manager-Verzeichnis wird dann wohl korrekt angelegt, aber danach kommt wieder der API 200 Error.

  7. #7
    Contao-Nutzer Avatar von Kahru
    Registriert seit
    20.06.2009.
    Ort
    Nordschwarzwald
    Beiträge
    200
    Partner-ID
    2067

    Standard

    Update falls der nächste stolpert: Ich habe in der composer.json alle nicht Contao-Extensions bei require rausgeworfen. Damit ging der Composer dann ohne Fehlermeldungen auf. Dann in die composer.json die Extensions wieder rein kopiert. Neu abgemeldet, neu angemeldet, der Composer geht weiterhin ohne Probleme auf. Update auf die 4.9.8 durchgeführt. Nochmals abgemeldet und angemeldet: Der Composer geht auf ... ein Gehakel ... aber Hauptsache es geht jetzt

  8. #8
    Contao-Fan Avatar von mdoll
    Registriert seit
    25.06.2009.
    Ort
    Wietze
    Beiträge
    338

    Standard

    Hallo,

    ich habe jetzt eine Contao-Installation, bei der das Löschen von der contao-manager.phar.php und das Löschen des contao-manager Ordner den Fehler nicht behebt.

    Contao Version: 4.9.7
    PHP: 7.4
    Managed Server bei Hetzner

    Beim Self-Update des Contao Managers von 1.3.0 auf 1.3.3 kommt ein "Error 200 - Unerwarteter API-Status" mit folgendem Code:
    Code:
    ) Contao Association
     *
     * @license LGPL-3.0-or-later
     */
    
    namespace Contao\ManagerApi\HttpKernel;
    
    use Contao\ManagerApi\Exception\ApiProblemException;
    use Crell\ApiProblem\ApiProblem;
    use Crell\ApiProblem\JsonException;
    use Symfony\Component\HttpFoundation\Response;
    use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
    
    class ApiProblemResponse extends Response
    {
        /**
         * Constructor.
         */
        public function __construct(ApiProblem $problem, array $headers = [])
        {
            if (!$problem->getStatus()) {
                $problem->setStatus(500);
            }
    
            if (!$problem->getTitle()) {
                $code = $problem->getStatus();
                $problem->setTitle(isset(Response::$statusTexts[$code]) ? Response::$statusTexts[$code] : 'unknown status');
            }
    
            try {
                $content = $problem->asJson();
            } catch (JsonException $exception) {
                $problem = new ApiProblem($exception->getMessage());
                $content = $problem->asJson();
            }
    
            parent::__construct(
                $content,
                $problem->getStatus(),
                array_merge($headers, ['Content-Type' => 'application/problem+json'])
            );
        }
    
        /**
         * Creates a ApiProblemResponse from exception.
         */
        public static function createFromException(\Throwable $exception, bool $debug = false): self
        {
            $headers = [];
    
            if ($exception instanceof ApiProblemException) {
                $problem = $exception->getApiProblem();
            } else {
                $problem = new ApiProblem($exception->getMessage());
    
                if ($exception instanceof HttpExceptionInterface) {
                    $problem->setStatus($exception->getStatusCode());
                }
    
                if ($debug) {
                    $problem['debug'] = $exception->getTraceAsString();
                }
            }
    
            if ($exception instanceof HttpExceptionInterface) {
                $headers = $exception->getHeaders();
            }
    
            return new static($problem, $headers);
        }
    }
    ate static $checkedClasses = [];
        private static $final = [];
        private static $finalMethods = [];
        private static $deprecated = [];
        private static $internal = [];
        private static $internalMethods = [];
        private static $annotatedParameters = [];
        private static $darwinCache = ['/' => ['/', []]];
        private static $method = [];
        private static $returnTypes = [];
        private static $methodTraits = [];
        private static $fileOffsets = [];
    
        public function __construct(callable $classLoader)
        {
            $this->classLoader = $classLoader;
            $this->isFinder = \is_array($classLoader) && method_exists($classLoader[0], 'findFile');
            parse_str(getenv('SYMFONY_PATCH_TYPE_DECLARATIONS') ?: '', $this->patchTypes);
            $this->patchTypes += [
                'force' => null,
                'php' => null,
                'deprecations' => false,
            ];
    
            if (!isset(self::$caseCheck)) {
                $file = file_exists(__FILE__) ? __FILE__ : rtrim(realpath('.'), \DIRECTORY_SEPARATOR);
                $i = strrpos($file, \DIRECTORY_SEPARATOR);
                $dir = substr($file, 0, 1 + $i);
                $file = substr($file, 1 + $i);
                $test = strtoupper($file) === $file ? strtolower($file) : strtoupper($file);
                $test = realpath($dir.$test);
    
                if (false === $test || false === $i) {
                    // filesystem is case sensitive
                    self::$caseCheck = 0;
                } elseif (substr($test, -\strlen($file)) === $file) {
                    // filesystem is case insensitive and realpath() normalizes the case of characters
                    self::$caseCheck = 1;
                } elseif (false !== stripos(\PHP_OS, 'darwin')) {
                    // on MacOSX, HFS+ is case insensitive but realpath() doesn't normalize the case of characters
                    self::$caseCheck = 2;
                } else {
                    // filesystem case checks failed, fallback to disabling them
                    self::$caseCheck = 0;
                }
            }
        }
    
        /**
         * Gets the wrapped class loader.
         *
         * @return callable The wrapped class loader
         */
        public function getClassLoader(): callable
        {
            return $this->classLoader;
        }
    
        /**
         * Wraps all autoloaders.
         */
        public static function enable(): void
        {
            // Ensures we don't hit https://bugs.php.net/42098
            class_exists('Symfony\Component\ErrorHandler\ErrorHandler');
            class_exists('Psr\Log\LogLevel');
    
            if (!\is_array($functions = spl_autoload_functions())) {
                return;
            }
    
            foreach ($functions as $function) {
                spl_autoload_unregister($function);
            }
    
            foreach ($functions as $function) {
                if (!\is_array($function) || !$function[0] instanceof self) {
                    $function = [new
    Ich habe dann die contao.manager.phar.php im Webverzeichnis gelöscht, auf contao.org. die phar neu runtergeladen. Der Fehler blieb. Verzeichnis contao-manager löschen hat auch nichts gebracht.

    composer.json sieht so aus:

    Code:
    {
        "type": "project",
        "require": {
            "contao-bootstrap/bundle": "^2.1",
            "contao/calendar-bundle": "4.9.*",
            "contao/comments-bundle": "4.9.*",
            "contao/conflicts": "*@dev",
            "contao/faq-bundle": "4.9.*",
            "contao/listing-bundle": "4.9.*",
            "contao/manager-bundle": "4.9.*",
            "contao/news-bundle": "4.9.*",
            "contao/newsletter-bundle": "4.9.*"
        },
        "extra": {
            "contao-component-dir": "assets"
        },
        "scripts": {
            "post-install-cmd": [
                "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            ],
            "post-update-cmd": [
                "Contao\\ManagerBundle\\Composer\\ScriptHandler::initializeApplication"
            ]
        }
    }
    Wie kriege ich den Manager wieder zum Laufen?

    Danke und Gruß
    Mathias
    “Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”
    ― Terry Pratchett, The Truth

  9. #9
    Contao-Nutzer
    Registriert seit
    07.08.2013.
    Beiträge
    39

    Standard

    Hast Du das Problem beheben können? Ich habe exakt das selbe Problem beim Hetzner mit einem Managed Server.

    Zitat Zitat von mdoll Beitrag anzeigen
    Hallo,
    ich habe jetzt eine Contao-Installation, bei der das Löschen von der contao-manager.phar.php und das Löschen des contao-manager Ordner den Fehler nicht behebt.

  10. #10
    Administratorin Avatar von lucina
    Registriert seit
    19.06.2009.
    Ort
    Kiel (DE)
    Beiträge
    7.332
    Partner-ID
    152
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

  11. #11
    Contao-Fan Avatar von quintacom
    Registriert seit
    08.07.2009.
    Beiträge
    293

    Standard

    Zitat Zitat von Kahru Beitrag anzeigen
    Update falls der nächste stolpert: Ich habe in der composer.json alle nicht Contao-Extensions bei require rausgeworfen. Damit ging der Composer dann ohne Fehlermeldungen auf. Dann in die composer.json die Extensions wieder rein kopiert. Neu abgemeldet, neu angemeldet, der Composer geht weiterhin ohne Probleme auf. Update auf die 4.9.8 durchgeführt. Nochmals abgemeldet und angemeldet: Der Composer geht auf ... ein Gehakel ... aber Hauptsache es geht jetzt
    Habe heute dasselbe Problem nach versuchtem automatischem Update des Contao-Managers von 1.3.3 auf 1.4.0. Hier läuft PHP 7.4.13 und Contao 4.9.9 bei Webhostone. Auch der Hinweis von lucina mit Änderung auf PHP 7.3 auf dem Webserver brachte keinen Erfolg. Nach wie vor der geschilderte API-Fehler.

    error-cm-update.jpg

    Was könnte man sonst noch probieren?
    Geändert von quintacom (17.02.2021 um 21:11 Uhr)

  12. #12
    Contao-Fan Avatar von mdoll
    Registriert seit
    25.06.2009.
    Ort
    Wietze
    Beiträge
    338

    Standard

    Zitat Zitat von cyborgxxl Beitrag anzeigen
    Hast Du das Problem beheben können? Ich habe exakt das selbe Problem beim Hetzner mit einem Managed Server.
    Wir hatten den Fehler jetzt wieder beim Update auf 1.4. Ich habe das umschifft, indem ich einen anderen Browser verwendet habe:

    • Update des CM auf 1.4 mit Firefox --> Error 200
    • Contao Manager mit Chrome aufgerufen --> keine Probleme
    • dann in Chrome alle Pakete aktualisiert
    • danach lief der Manager auch wieder im Firefox


    Gruß
    Mathias
    “Ah," said Mr Pin. "Right. I remember. You are concerned citizens." He knew about concerned citizens. Wherever they were, they all spoke the same private language, where 'traditional values' meant 'hang someone'.”
    ― Terry Pratchett, The Truth

  13. #13
    Contao-Fan Avatar von quintacom
    Registriert seit
    08.07.2009.
    Beiträge
    293

    Standard

    Wow, das hat tatsächlich funktioniert. Vielen Dank für den Tipp.

  14. #14
    Contao-Nutzer
    Registriert seit
    18.07.2016.
    Beiträge
    61

    Standard

    Hatte dasselbe Problem bei Hosteurope (Webserver Basic) mit PHP7.3. Bin dann runter auf PHP7.3, somit lief das Update des Contao Managers problemlos durch. Habe anschließend nach dem Update wieder auf PHP7.4 gewechselt und es traten keine Probleme mehr auf.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •