[BUG 4.9.12] cCodeGenerator - Uncaught exception cInvalidArgumentException

Alle bestätigten Fehler in CONTENIDO 4.9 (erledigte Fehler werden durch geschlossene Beiträge gekennzeichnet).
Antworten
Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

[BUG 4.9.12] cCodeGenerator - Uncaught exception cInvalidArgumentException

Beitrag von Oldperl » Do 29. Jun 2017, 13:56

Servus,

Bug in der Datei contenido/classes/code_generator/class.code.generator.standard.php!

Fehlermeldung im errorlog:
[29-Jun-2017 07:50:04 UTC] PHP Fatal error: Uncaught exception 'cInvalidArgumentException' with message 'The file /var/www/.../html/data/temp/code_gen_5954b12c25e37.php could not be accessed because it does not exist.' in /var/www/.../html/contenido/classes/class.filehandler.php:233
Stack trace:
#0 /var/www/.../html/contenido/classes/code_generator/class.code.generator.standard.php(141): cFileHandler::remove('/var/www/...')
#1 /var/www/.../html/contenido/classes/code_generator/class.code.generator.abstract.php(215): cCodeGeneratorStandard->_generate(true, false, NULL)
#2 /var/www/.../html/contenido/includes/functions.con2.php(57): cCodeGeneratorAbstract->generate(73, '1430', 1, 1, false, true, true, false, NULL)
#3 /var/www/.../html/contenido/includes/frontend/include.front_content.php(537): conGenerateCode(73, '1430', 1, 1)
#4 /var/www/.../html/cms/front_content.php(82): include('/var/www/...')
#5 {main}
thrown in /var/www/.../html/contenido/classes/class.filehandler.php on line 233
Der Grund liegt in der Methode _generate() des CodeGenerators. Dort wird ab Zeile 132 ff der Modul-Code mit Hilfe einer temporären Datei bereinigt. Dabei wird diese Datei im temp-Verzeichnis von Contenido erstellt, bearbeitet eingelesen und soll im Anschluss wieder gelöscht werden. Es wird zwar in einer if-Bedingung geprüft ob die Datei erstellt wurde, nur dann wird auch die Bearbeitung gemacht, jedoch wird auch wenn die Datei nicht erstellt wurde versucht, diese zu löschen. Bei nicht vorhandener temporärer Datei erfolgt daher ein entsprechender Eintrag im errorlog.

Code: Alles auswählen

// CON-1536 strip comments from module code
                // regex is not enough to correctly remove comments
                // use php_strip_whitespace instead of writing own parser
                // downside: php_strip_whitespace requires a file as parameter
                $tmpFile = dirname(cRegistry::getBackendPath()) . '/' . $cfg['path']['temp'] . uniqid('code_gen_') . '.php';
                if (cFileHandler::exists(dirname($tmpFile))
                    && cFileHandler::readable(dirname($tmpFile))
                    && cFileHandler::writeable(dirname($tmpFile))) {
                    if (false !== cFileHandler::write($tmpFile, $this->_moduleCode)) {
                        $this->_moduleCode = php_strip_whitespace($tmpFile);
                    }
                    // delete file
                    cFileHandler::remove($tmpFile);
                }
Abhilfe:
Am einfachsten ist es den Löschversuch nur bei erfolgreichem Schreiben der Datei zu machen, sprich, der remove-Befehl des DirHandlers sollte ebenfalls mit in die if-Abfrage rein.

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [BUG 4.9.12] cCodeGenerator - Uncaught exception cInvalidArgumentException

Beitrag von frederic.schneider_4fb » Do 29. Jun 2017, 14:25

Hey Ortwin, leider war ich heute nicht lange im Hause, sonst hätte ich mich umgehend darum gekümmert. Ich setze das für nächste Woche auf die Tagesordnung. Du bekommst dann hier eine Rückmeldung. Danke schon einmal (inklusive für den Tipp, wie man es wahrscheinlich beheben kann)!
Frederic Schneider
Entwickler bei der four for business AG

Oldperl
Beiträge: 4250
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Kontaktdaten:

Re: [BUG 4.9.12] cCodeGenerator - Uncaught exception cInvalidArgumentException

Beitrag von Oldperl » Fr 30. Jun 2017, 06:41

Servus Frederic,

kein Problem, immer ruhig bleiben. 8)
Ist jetzt kein so gravierender Bug, zumal er jetzt ja schon ziemlich lange existiert. Füllt halt nur wenn zutrifft das errorlog.

Also, schönes Wochenende zu Dir! :)

Gruß aus Franken

Ortwin
ConLite 2.1, alternatives und stabiles Update von Contenido 4.8.x unter PHP 7.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [BUG 4.9.12] cCodeGenerator - Uncaught exception cInvalidArgumentException

Beitrag von frederic.schneider_4fb » Sa 1. Jul 2017, 09:29

Danke, Dir auch ;)
Frederic Schneider
Entwickler bei der four for business AG

frederic.schneider_4fb
Beiträge: 967
Registriert: Do 15. Apr 2004, 17:12
Wohnort: Eschborn-Niederhöchstadt
Kontaktdaten:

Re: [BUG 4.9.12] cCodeGenerator - Uncaught exception cInvalidArgumentException

Beitrag von frederic.schneider_4fb » Do 13. Jul 2017, 09:08

Guten Morgen,

ich habe Deinen Änderungsvorschlag inzwischen in den Core-Code übernommen. Danke nochmals!
Frederic Schneider
Entwickler bei der four for business AG

Antworten