PHP message: PHP Fatal error: Uncaught TypeError: Cannot access offset of type string on string

  • Hallo,

    Seit der Umstellung auf PHP8 bekomme ich bei einem externen Script folgende Fehlermeldung:

    Code
    PHP message: PHP Fatal error:  Uncaught TypeError: Cannot access offset of type string on string

    Die betroffene Zeile ist:

    PHP
    if ($uploadZoneData[1]['size'] != 0) {

    Die Zwei php-funktionen sind wie folgt:

    An was genau könnte das hier haken? Unter 7.4 lief es noch ohne Probleme.

    ┌П┐(◉_◉)┌П┐

    Edited once, last by TeRRible__KHONS (March 10, 2021 at 6:41 AM).

  • if ($uploadZoneData['1']['size'] != 0) { funktionierte auch leider nicht :/ (daher habe ich die Zeile betreffend der Frage aus dem Startpost entfernt).

    Schon komisch :/

    EDIT: Irgendwas muss sich hier jedoch an php 8 geändert haben daß der Code oben nicht mehr funktioniert.

    ┌П┐(◉_◉)┌П┐

  • Sobald ich daheim bin wieder, kann ich gerne Mal am PC schauen :) . Das wird leider nicht vor 11 Uhr, vielleicht hat ja jemand anderes bis dahin die Lösung schon.

    Projekte:

    XIVDATA - Eorzea Database

    A red dragon falls from the heavens... Ah, that memory has been lost. A shame. It was a favorite of mine...

  • Danke für den Hint, uploadZoneData[1] scheint kein Array zu sein:

    Code
    $newfilename = $zoneCustomer . '-' . strtoupper($zone) . '-' . uniqid() . '.' . end($temp);

    Das Problem wird sein dass php7.4 nur ein Warn ausgegeben hat und php 8 jetzt ein fatal.

    Um das gleiche zu erreichen sollte ich wohl:

    if ($uploadZoneData[1]['size'] != 0) {

    Mit diesem ersetzen:

    if (!empty($uploadZoneData[1])) {

    Damit sollte dann geprüft werden ob die file vorhanden ist oder nicht?

    ┌П┐(◉_◉)┌П┐

  • $newfilename wird glaub ich nur gesetzt wenn der Upload erfolgreich war ansonsten ist die leer.

    Hat jedenfalls unter php 7.4 funktioniert mit dem Code oben daher denke ich dass das mit empty schon passen sollte :/

    Muss es probieren.

    Danke.

    ┌П┐(◉_◉)┌П┐

  • Danke für eure Mühen ich habe das Problem jetzt lösen können indem ich

    PHP
    if ($uploadZoneData[1]['size'] != 0) {

    Mit folgendem ersetzt habe

    PHP
    if (!empty($uploadZoneData[1])) {

    Der Grund ist wohl dass php8 anstatt nur eine Warnung wie bei php7.4 hier ein Fatal-Error geworfen hat und somit der Fehler nicht aufgefallen ist.

    Nicht desto trotz war der Code vorhin auch "falsch" da es kein Array ist.

    Habs getestet und funktioniert wieder, danke euch 😉👍

    ┌П┐(◉_◉)┌П┐

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!