Closed aurixan closed 5 months ago
Da wird anscheinend ein so nicht existierender Artikel von einem Spider aufgerufen.
Ändere mal in includes/functions/extra_functions/vataddon.php
Zeile 13
von
if(DISPLAY_VATADDON_WHERE
== '0'){`
auf
if((DISPLAY_VATADDON_WHERE == '0') || ($product_check->EOF)) {
Bitte melde zurück, ob diese Logs nach dieser Änderung noch auftreten
Ich werde die Änderung einbauen und melde mich in ein paar Tagen zurück, weil das Problem nicht jeden Tag aufgetreten ist.
Die debug logs treten leider auch mit dem geänderten Code wieder auf. Heute gab es innerhalb von 7 Sekunden 10 log dateien. Jede der 10 logs hat eine andere ip-addresse. Die product-id 54, auf die zugegriffen wird, existiert und ist freigeschaltet. Der Stack Trace ist immer gleich.
Hier die ersten 4 Zugriffe, die immer den gleichen Stack Trace erzeugen:
[27-Apr-2024 12:20:57 Europe/Berlin] Request URI: /index.php?main_page=product_info&products_id=54&language=en%20and%2015%3d19, IP address: 53.186.93.98 --> PHP Fatal error: Uncaught ValueError: Unknown format specifier "a" in /includes/functions/extra_functions/vataddon.php:24 Stack trace:
[27-Apr-2024 12:20:58 Europe/Berlin] Request URI: /index.php?main_page=product_info&products_id=54&language=en%20and%2020%3d20, IP address: 76.248.210.84 --> PHP Fatal error: Uncaught ValueError: Unknown format specifier "a" in /includes/functions/extra_functions/vataddon.php:24 Stack trace:
[27-Apr-2024 12:20:59 Europe/Berlin] Request URI: /index.php?main_page=product_info&products_id=54&language=en'%20and%2015%3d19, IP address: 79.173.209.159 --> PHP Fatal error: Uncaught ValueError: Unknown format specifier "a" in /includes/functions/extra_functions/vataddon.php:24 Stack trace:
[27-Apr-2024 12:21:00 Europe/Berlin] Request URI: /index.php?main_page=product_info&products_id=54&language=en'%20and%2020%3d20, IP address: 151.5.241.47 --> PHP Fatal error: Uncaught ValueError: Unknown format specifier "a" in /includes/functions/extra_functions/vataddon.php:24 Stack trace:
Ich kann selbst die debug logs erzeugen, wenn ich die in den logs verwendete ULR verwende. Wie kann man die debug logs vermeiden?
Wenn Du die URL ohne diese Zusätze normal so aufrufst: index.php?main_page=product_info&products_id=54&language=en Wird dann auch so ein Log erzeugt?
Welchen Steuersatz hat der Artikel mit der ID 54? Ist das ein normaler Artikel so wie alle anderen im Shop auch oder was Spezielles?
Wenn Du die URL ohne diese Zusätze normal so aufrufst: index.php?main_page=product_info&products_id=54&language=en Wird dann auch so ein Log erzeugt?
Die Seite wird aufgebaut und es gibt kein Log.
Wenn ich weitere Zeichen hinzufüge, funktioniert der Seitenaufbau bis einschließlich: /index.php?main_page=product_info&cPath=6&products_id=54&language=en%27%20and
Ein weiteres Zeichen z.B. /index.php?main_page=product_info&cPath=6&products_id=54&language=en%27%20and% führt zu einem Log und die Seite bleibt weiß.
Welchen Steuersatz hat der Artikel mit der ID 54? Ist das ein normaler Artikel so wie alle anderen im Shop auch oder was Spezielles?
Ich habe im Januar 2024 von 19% auf 0% umgestellt (Kleinnunternehmer). Ich habe in Zencart nur einen Steuersatz eingetragen. Vielleciht habe ich da grundsätzlich etwas verstellt. Aber der Shop funktioniert soweit.
Zum Test habe ich die Zeichenkette "%27%20and%" an die URL eines anderen bereits bestehenden Produkts herangehängt: Es gibt einen Log und die Seite bleibt weiss.
Ich habe eine neues Produklt angelegt und auch hier die Zeichenkette "%27%20and%" angefügt, und auch dies führt zu einem Log.
Danke für den Hinweis auf die Kleinunternehmerregelung. In Deinem Szenario macht es keinen Sinn die Steuer für diesen Hinweis auszulesen. Angehängt ist eine angepasste includes/functions/extra_functions/vataddon.php für Kleinunternehmer. vataddon.zip
Ersetze die bestehende in Deinem Shop mit der, dann sollte so ein Log unmöglich sein.
Achte auch darauf, dass Deine Sprachdatei für diesen Hinweistext ebenfalls keinen Steuerhinweis enthält.
Das ist folgende Datei:
includes/languages/german/extra_definitions/rl.vat_info.php
In Deinem Szenario sollte deren Inhalt z.B. so aussehen:
define('VAT_SHOW_TEXT_VERSANDKOSTENFREI','<br><span class="taxAddon">Gemäß §19 UStG wird keine Umsatzsteuer berechnet</span>');
define('VAT_SHOW_TEXT','<br><span class="taxAddon">Gemäß §19 UStG wird keine Umsatzsteuer berechnet<br> zzgl. <a href="' . zen_href_link(FILENAME_SHIPPING) . '">Versandkosten</a></span>');
Für die englische Sprache auch includes/languages/english/extra_definitions/rl.vat_info.php entsprechend anpassen.
Wenn ich die neue vataddon.php verwende, dann geht der ganze Shop nicht mehr: HTTP500 :-( Ich habe es zwei Mal ausprobiert, um einen Fehler meinerseits auszuschließen.
Die Sprachdatei-Anpassungen habe ich mir heute nicht angesehen, denn ich ich habe schon einen Hinweis bei den Preisen einschließlich einem "*" Link. Dies Thema schaue ich mir noch einmal an, soblad der Debug Log verschwunden ist.
Interessanterweise habe ich heute auch einen einzelnen Debug Log bekommen, der wahrscheinlich nicht von einem Spider kommt:
[28-Apr-2024 16:24:38 Europe/Berlin] Request URI: /index.php?main_page=index%27, IP address: 65.108.71.135 --> PHP Fatal error: Uncaught ValueError: Unknown format specifier "#" in /includes/functions/extra_functions/vataddon.php:24 Stack trace:
thrown in /includes/functions/extra_functions/vataddon.php on line 24.
Die oben verlinkte includes/functions/extra_functions/vataddon.php ist völlig ok und löst in einem normalen Zen Cart 1.5.7h deutsch keinen Error 500 aus. Die einzige Änderung gegenüber der Originaldatei aus 1.5.7h ist, dass die Abfrage nach dem Steuersatz herausgenommen wird:
Statt
$vat = zen_get_tax_rate($product_check->fields['products_tax_class_id']) . '% '; if ($product_check->fields['product_is_always_free_shipping'] == 1) { $ret = sprintf(VAT_SHOW_TEXT_VERSANDKOSTENFREI, $vat); } else { $ret = sprintf(VAT_SHOW_TEXT, $vat); } return $ret;
Folgendes:
if ($product_check->fields['product_is_always_free_shipping'] == 1) { $ret = VAT_SHOW_TEXT_VERSANDKOSTENFREI; } else { $ret = VAT_SHOW_TEXT; } return $ret;
Und die alte vaddon.php darf natürlich nicht noch weiter im Ordner includes/functions/extra_functions etwa unter einem anderen Namen herumliegen. Die bestehende muss gegen die neue ausgetauscht werden.
Ich habe herausgefunden warum ich den HTTP500 Fehler bekomme. Ich hatte 2 Dateien vataddon_save.php und vataddon.php in meinem Folder. Ich wusste nicht, dass das nicht geht.
Ich neue vataddon.php für Kleinunternehmer erzeugt jetzt keine Debug Logs mehr. DANKE für die Hilfe.
Alle Dateien mit der Endung .php im Ordner includes/functions/extra_functions werden bei jedem Seitenaufruf automatisch alle geladen. Daher darf da nie was doppelt sein oder anderes Zeug, das da nichts verloren hat mit der Endung .php herumliegen. Ist überhaupt zu empfehlen, keine Backupdateien herumliegen zu lassen. Wenn schon, dann die Dateiendung auf .bak oder sowas umbenennen.
fix provided
Seit version 1.5.7h (upgedate von 1.5.7f) bekomme ich zeitweise viele debug logs mit immer dem gleichen Fehler. Wenn ich selbst durch die Shop-Pages browse, sehe ich keine debug logs. Woran kann das liegen?
[24-Apr-2024 18:32:45 Europe/Berlin] Request URI: /index.php?main_page=product_info&products_id=54&language=en%25'%20and%2020%3d20%20and%20'%25'%3d', IP address: --> PHP Fatal error: Uncaught ValueError: Unknown format specifier "'" in /includes/functions/extra_functions/vataddon.php:23 Stack trace:
0 /includes/functions/extra_functions/vataddon.php(23): sprintf('
<span clas...', '0% ')
1 /includes/functions/functions_prices.php(422): vatAddOn(Object(queryFactoryResult))
2 /includes/templates/responsive_classic/templates/tpl_product_info_display.php(119): zen_get_products_display_price(54)
3 /includes/modules/pages/product_info/main_template_vars.php(158): require('/is/htdocs/wp11...')
4 /includes/templates/responsive_classic/common/tpl_main_page.php(179): require('/is/htdocs/wp11...')
5 /index.php(95): require('/is/htdocs/wp11...')
6 {main}
thrown in /includes/functions/extra_functions/vataddon.php on line 23.