{"id":237296,"date":"2022-12-08T08:27:27","date_gmt":"2022-12-08T06:27:27","guid":{"rendered":"https:\/\/devowl.io\/?post_type=knowledge-base&#038;p=237296"},"modified":"2022-12-08T09:34:41","modified_gmt":"2022-12-08T07:34:41","slug":"plugin-update-fatal-error","status":"publish","type":"knowledge-base","link":"https:\/\/devowl.io\/de\/wissensdatenbank\/plugin-update-fataler-fehler\/","title":{"rendered":"Plugin Update verursacht einen fatalen Fehler und das Plugin wird deaktiviert"},"content":{"rendered":"<section class=\"l-section wpb_row height_medium\"><div class=\"l-section-h i-cf\"><div class=\"g-cols vc_row via_flex valign_top type_default stacking_default\"><div class=\"vc_col-sm-12 wpb_column vc_column_container\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><p>Du hast eines unserer Plugins geupdated bzw. es wurde automatisch updated und pl\u00f6tzlich wurde das Plugin aufgrund eines fatalen Fehlers deaktiviert und l\u00e4sst sich ggf. nicht mehr aktivieren? Dies ist ein Fehler in WordPress Core und in diesem Artikel erkl\u00e4ren wir dir, wieso dies passiert und wie du es wahrscheinlich l\u00f6sen kannst.<\/p>\n<h2>Problem identifizieren<\/h2>\n<p>Meistens erh\u00e4ltst du nach einem fehlerhaften Update direkt eine E-Mail von deiner WordPress Instanz, welche dich darauf hinweist, dass ein Plugin aufgrund eines fatalen Fehlers deaktiviert wurde. Folgende Fehlermeldung k\u00f6nntest du dabei vorfinden:<\/p>\n<pre>Warning: require_once(\/wp-content\/plugins\/real-cookie-banner-pro\/inc\/base\/others\/start.php):\r\nFailed to open stream: No such file or directory in \/wp-content\/plugins\/real-cookie-banner-pro\/index.php on line 48<\/pre>\n<pre>Warning: include(..\\wp-content\\plugins\\real-thumbnail-generator-lite\\vendor\\composer\/..\/devowl-wp\/real-product-manager-wp-client\/src\/client\/ClientUtils.php): Failed to open stream: No such file or directory in ..\\wp-content\\plugins\\cloudflare\\vendor\\composer\\ClassLoader.php on line 444<\/pre>\n<pre>Ein Fehler vom Typ E_COMPILE_ERROR wurde in der Zeile 48 der Datei \/wp-content\/plugins\/real-cookie-banner\/index.php\r\nFehlermeldung: require_once(): Failed opening required '\/wp-content\/plugins\/real-cookie-banner\/inc\/base\/others\/start.php' (include_path='.:\/usr\/lib\/php7.4')<\/pre>\n<p>Neben diesen Beispielen kann die Fehlermeldung f\u00fcr jeden beliebige Dateinamen auftauchen.<\/p>\n<p class=\"translation-block\">Die Fehlermeldung <code>Failed to open stream<\/code> bedeutet, dass WordPress bzw. dein PHP Server versucht, eine Datei zu \u00f6ffnen, welche jedoch nicht existiert. In unserem Fall handelt es sich hier um Plugin-Dateien, welche w\u00e4hrend des Update-Prozesses nicht verschoben werden konnten. Wie im nachfolgendem Screenshot zu sehen, findest du vermutlich nur einen Teil der Plugin-Dateien von bspw. Real Cookie Banner, wenn du den Plugin-Ordner via FTP pr\u00fcfst. Normalerweise solltest du weitere Ordner wie <code>inc<\/code> vorfinden.<\/p>\n<\/div><\/div><div class=\"w-image us_custom_3090c82c align_none\"><a ref=\"magnificPopup\" href=\"https:\/\/devowl.io\/wp-content\/uploads\/knowledge-base\/plugin-update-fatal-error-ftp-missing-files.png\" aria-label=\"plugin-update-fatal-error-ftp-missing-files\" class=\"w-image-h\"><img decoding=\"async\" width=\"638\" height=\"279\" src=\"https:\/\/devowl.io\/wp-content\/uploads\/knowledge-base\/plugin-update-fatal-error-ftp-missing-files.png\" class=\"attachment-large size-large\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/devowl.io\/wp-content\/uploads\/knowledge-base\/plugin-update-fatal-error-ftp-missing-files.png 638w, https:\/\/devowl.io\/wp-content\/uploads\/knowledge-base\/plugin-update-fatal-error-ftp-missing-files-326x143.png 326w, https:\/\/devowl.io\/wp-content\/uploads\/knowledge-base\/plugin-update-fatal-error-ftp-missing-files-18x8.png 18w\" sizes=\"auto, (max-width: 638px) 100vw, 638px\" \/><\/a><\/div><div class=\"wpb_text_column\"><div class=\"wpb_wrapper\"><h2>L\u00f6sung, um das Plugin wieder zu aktivieren<\/h2>\n<p>Wie oben bereits erw\u00e4hnt, hat WordPress aus Sicherheitsgr\u00fcnden das Plugin komplett deaktiviert, sodass deine Website weiterhin erreichbar ist. Du solltest nun folgende Schritte befolgen, um unser Plugin wieder wie vorher verwenden zu k\u00f6nnen:<\/p>\n<ol>\n<li>Logge dich in deine WordPress Instanz ein<\/li>\n<li>Navigiere zu deinen installierten Plugins<\/li>\n<li>Scrolle zu dem jeweiligen Plugin, welches deaktiviert wurde<\/li>\n<li>Deinstalliere dieses komplett (keine Sorge, w\u00e4hrend der Deinstallation l\u00f6schen wir keine Daten wie bspw. Ordner in Real Media Library oder deine Einstellungen f\u00fcr Real Cookie Banner!)<\/li>\n<li>Lade das Plugin erneut herunter\n<ol>\n<li class=\"translation-block\">Sollte es sich um eine kostenlose Version unseres Plugins handeln, kannst du dies \u00fcber <code>Plugins &gt; Installieren<\/code> erneut installieren<\/li>\n<li class=\"translation-block\">Sollte es sich um ein gekauftes Produkt handeln, logge dich in unserem <a href=\"https:\/\/devowl.io\/de\/account\/\" target=\"_blank\" rel=\"noopener\">Kundencenter<\/a> ein und lade das Plugin erneut herunter. Lade das Plugin anschlie\u00dfend \u00fcber <code>Plugins &gt; Installieren &gt; Hochladen<\/code> erneut hoch.<\/li>\n<li class=\"translation-block\">Sollte es sich um ein gekauftes Produkt auf CodeCanyon.net handeln, navigiere zu <a href=\"https:\/\/codecanyon.net\/downloads\" target=\"_blank\" rel=\"noopener\">codecanyon.net\/downloads<\/a> und lade dort das Plugin erneut herunter. Lade das Plugin anschlie\u00dfend \u00fcber <code>Plugins &gt; Installieren &gt; Hochladen<\/code> erneut hoch.<\/li>\n<\/ol>\n<\/li>\n<\/ol>\n<h2>Fehlgeschlagene Plugin-Updates in Zukunft vermeiden<\/h2>\n<p class=\"translation-block\">Wie im Einleitungstext bereits erw\u00e4hnt, handelt es sich bei dieser Art von fehlerhaften Updates um ein Problem mit dem WordPress Core, d. h. dies kann f\u00fcr jedes deiner Plugins auftreten (je nach Gr\u00f6\u00dfe des Plugins). WordPress selbst ist sich diesem Problem bereits bewusst, \"testet\" und forscht jedoch noch an einer L\u00f6sung. Eine tempor\u00e4re L\u00f6sung kann durch das von dem WordPress Core Team bereitgestellte Plugin <a href=\"https:\/\/wordpress.org\/plugins\/rollback-update-failure\/\" target=\"_blank\" rel=\"noopener\">Rollback Update Failure<\/a> gefunden werden. Installiere dieses Plugin und pr\u00fcfe, ob das Problem erneut auftritt.<\/p>\n<p class=\"translation-block\">Sollte das Problem weiterhin auftreten, poste bitte das Problem direkt an das WordPress Core Team, <a href=\"https:\/\/wordpress.org\/support\/topic\/the-plugin-x-has-been-deactivated-due-to-an-error-plugin-file-does-not-exist\/\" target=\"_blank\" rel=\"noopener\">so wie dieser User<\/a>. Da das Problem unserer Auffassung nur bei automatischen Updates auftritt, nicht aber bei Updates \u00fcber einen Klick auf \"Update\" (die UI hat einen Rollback-Modus bereits implementiert), kannst du zus\u00e4tzlich noch automatische Updates f\u00fcr das jeweilige Plugin deaktivieren.<\/p>\n<h2>Technische Ursache<\/h2>\n<p class=\"translation-block\">Du m\u00f6chtest wissen, wieso dieses Problem \u00fcberhaupt auftritt? Wir versuchen, dies mal kurz und verst\u00e4ndlich, aber auch technisch zusammenzufassen. Ein WordPress Entwickler hat dies in einem <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/54166\" target=\"_blank\" rel=\"noopener\">\u00f6ffentlichen Ticket<\/a> auf folgende Ursache zur\u00fcckgef\u00fchrt (\u00fcbersetzt):<\/p>\n<blockquote>\n<p>Nach [...] gibt es einen Fehler bei der Aktualisierung gro\u00dfer Plugins wie Gutenberg oder WooCommerce. Nach der Fehlersuche scheint das Problem auf einen PHP-Timeout zur\u00fcckzuf\u00fchren zu sein und h\u00e4ngt von der Konfiguration des Servers ab (weshalb der Fehler nur bei gro\u00dfen Plugins auftritt). Die Art und Weise, wie wir ein Verzeichnis in PHP l\u00f6schen, besteht darin, dass wir alle Dateien in diesem Verzeichnis durchgehen und sie eine nach der anderen l\u00f6schen (soweit ich wei\u00df, ist dies die einzige M\u00f6glichkeit). Das L\u00f6schen oder Wiederherstellen eines Backups eines gro\u00dfen Plugins nimmt daher mehr Zeit in Anspruch als erwartet.<\/p>\n<\/blockquote>\n<p class=\"translation-block\">Dies beudetet, dein Server bzw. die Implementierung, wie WordPress Updates einspielt, ist schlicht zu langsam. Sollte ein Plugin aus vielen einzelnen Dateien bestehen, kann dies zu Problemen f\u00fchren. W\u00e4hrend des gesamten Prozesses, beginnend mit dem <strong>Zippen<\/strong> des alten Plugin-Ordners, <strong>l\u00f6schen<\/strong> des alten Plugin-Ordners, <strong>entpacken<\/strong> der neuen Version in einen tempor\u00e4ren Ordner und abschlie\u00dfendem <strong>Kopieren<\/strong> der neuen Dateien in den Zielordner, kann dies zu einem PHP Timeout deines Servers f\u00fchren (PHP erlaubt je nach Konfiguration nur eine bestimmte Zeit an laufender Ausf\u00fchrzeit). Sollte der Timeout im letzten Schritt (beim Kopieren der neuen Dateien) auftreten, wird der Vorgang abgebrochen und die restlichen Dateien wurden nicht mehr kopiert.<\/p>\n<p class=\"translation-block\">Das WordPress Team kennt eine potenzielle L\u00f6sung und hat diese ebenfalls unter einem <a href=\"https:\/\/core.trac.wordpress.org\/ticket\/51857\" target=\"_blank\" rel=\"noopener\">\u00f6ffentlichen Ticket<\/a> dokumentiert. WordPress m\u00f6chte einen Mechanismus einf\u00fchren, um fehlerhafte Plugin \/ Theme Updates <strong>automatisch aus einem Backup wiederherzustellen und das Kopieren der neuen Dateien allgemein beschleunigen<\/strong>. Da es sich bislang um eine experimentelle L\u00f6sung handelt, wurde diese in ein Plugin ausgelagert: <a href=\"https:\/\/wordpress.org\/plugins\/rollback-update-failure\/\" target=\"_blank\" rel=\"noopener\">Rollback Update Failure<\/a> (<a href=\"https:\/\/github.com\/WordPress\/WordPress\/blob\/8972539bc5301f7b97e52171f4d4671bdee40d05\/wp-admin\/includes\/class-wp-upgrader.php#L596-L612\" target=\"_blank\" rel=\"noopener\">hier<\/a> findest du die Code Stelle im WordPress Core der Auslagerung).<\/p>\n<\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/section>","protected":false},"template":"","topic":[20],"class_list":["post-237296","knowledge-base","type-knowledge-base","status-publish","hentry","topic-wordpress"],"acf":[],"_links":{"self":[{"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/knowledge-base\/237296","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/knowledge-base"}],"about":[{"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/types\/knowledge-base"}],"version-history":[{"count":11,"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/knowledge-base\/237296\/revisions"}],"predecessor-version":[{"id":237308,"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/knowledge-base\/237296\/revisions\/237308"}],"wp:attachment":[{"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/media?parent=237296"}],"wp:term":[{"taxonomy":"topic","embeddable":true,"href":"https:\/\/devowl.io\/de\/wp-json\/wp\/v2\/topic?post=237296"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}