Schwerwiegender Fehler: Namespace-Deklarationsanweisung muss die allererste Anweisung im Skript sein in

Lesezeit: 1 Minute

Ich versuche, dies zu verwenden, um einen Bildformular-Upload für meine Website zu erstellen. Der Grund, warum ich dies verwende, ist, dass es sicherer ist, als alles selbst zu tun (aber wenn jemand einen anderen zeigen könnte Arbeiten Skript würde ich schätzen)

simon-eQ / ImageUploader

Fatal error: Namespace declaration statement has to be the very first statement in the script in C:\xampp\htdocs\project\lib\ImageUploader.php on line 4

Blick auf den Quellcode:

<br />
<b>Fatal error</b>:  Namespace declaration statement has to be the very first statement in the script in <b>C:\xampp\htdocs\project\lib\ImageUploader.php</b> on line <b>4</b><br />

Ich habe es mit “includes” und “requires” versucht und es funktioniert immer noch nicht.

  • Diese Datei ist kaputt (der letzte Commit hat sie kaputt gemacht, war wahrscheinlich nicht beabsichtigt). Senden Sie einen Fehlerbericht.

    – Jon

    29. Januar 2014 um 13:55 Uhr


  • Die Bibliothek funktioniert überhaupt nicht, setSizeLimit ist kaputt, setImageSize wird ebenfalls ignoriert, verwenden Sie dies einfach nicht.

    Benutzer2536244

    29. Januar 2014 um 14:32 Uhr

  • @user2536244 Bitte versuchen Sie es jetzt. Es ist meine Freiheit. Überprüfen Sie außerdem meine Antwort und sagen Sie mir für den Moment, ob etwas nicht stimmt. Wie Jon sagte, hat das letzte Commit es gebrochen.

    – Samayo

    29. Januar 2014 um 15:17 Uhr

  • Ändern Sie die Codierung in iso-8859-1

    – Benutzer956584

    1. Februar 2017 um 21:56 Uhr

Benutzer-Avatar
Vivek Chaudhari

Manchmal tritt dieses Problem aufgrund von Leerzeichen im PHP-Start-Tag des Controllers auf, der mit demselben Problem konfrontiert ist, in dem nur Leerzeichen entfernt wurden:

<?php 
namespace App\Http\Controllers\Auth;

Das Entfernen des Leerzeichens hat meinen Fehler behoben

  • Ich hatte das gleiche Problem in meinem Code

    – CliffVandyck

    28. August 2018 um 12:00 Uhr


  • Fehler wie dieser lassen mich fragen, wie die Programmierung in den frühen Tagen vor dem Stapelüberlauf gewesen sein muss

    – Arthur Tarasov

    31. August 2018 um 12:31 Uhr

  • Absolute Legende. Das hat mich gerade gerettet. Diese heimtückischen Räume!

    – Gewürz

    14. Dezember 2018 um 2:47 Uhr

  • Überprüfen Sie auch, ob Ihre IDE UTF-8-Dateien (ohne BOM) UTF-8 BOM erstellt. Zum Beispiel in phpStorm Settings / Editor / File Encodings -> Create UTF-8 files: with NO BOM

    – ShirleyCC

    16. Januar 2019 um 12:10 Uhr

Stellen Sie sicher, dass dies der Fall ist kein Leerzeichen vor Ihrem PHP-Tag

// whitespace
<?php
    namespace HelloWorld
?>

Entfernen Sie den Leerraum, bevor Ihr PHP-Tag beginnt

<?php
    namespace HelloWorld
?>

  • Danke: Das ist die Lösung

    – Wassim al-Ahmad

    29. November 2019 um 10:33 Uhr


  • Perfekt: Du hast meine Zeit gespart.

    – Bedram Tamang

    7. Dezember 2019 um 9:00 Uhr

  • das ist die perfekte Lösung.

    Benutzer10678889

    16. Januar 2020 um 7:42 Uhr

  • schön und einfach ! Vielen Dank

    – Pablo Salazar

    13. April 2020 um 18:42 Uhr

Benutzer-Avatar
Saidul Haque

Ich bin auch vor dem Problem gestanden. In der PHP-Datei habe ich folgenden Code geschrieben, wo vor dem PHP-Start-Tag etwas Platz war

<?php
namespace App\Controller;

Wenn ich dieses Leerzeichen entferne, hat es sich gelöst.

  • Schauen Sie sehr genau hin. Meins war über dem

    – Dylan Glöckler

    13. September 2017 um 16:47 Uhr

Benutzer-Avatar
Pawel Kenarow

Sie müssen die Dateicodierung auf ändern ANSI. Ich habe Notepad ++ mit Codierung verwendet UTF-8 und hatte das selbe Problem. Das Problem verschwand, nachdem ich die Dateikodierung auf geändert hatte ANSI!

Benutzer-Avatar
mystisch

Dieser Thread scheint über dasselbe Problem zu sprechen – es hört sich so an, als würde dieser Fehler normalerweise dadurch verursacht, dass einige Daten vom Server gesendet werden, bevor die Namespace-Anweisung gefunden wird.

  1. Könnte Ihr Webhosting vor dem PHP-Code Code in Ihre Seite einfügen?
  2. Befindet sich am Anfang des Dokuments eine UTF-8 Byte Order Mark?

Andererseits könnte es auch ein Bug im ImageUploader sein… der Haupt-PHP-Datei setzt den Namensraum nach der Klassendefinition, was ich in der PHP-Dokumentation nicht gesehen habe, die besagt, dass es der allererste PHP-Code sein sollte. Aus diese Seite:

Namensräume werden mit dem Schlüsselwort namespace deklariert. Eine Datei, die einen Namensraum enthält, muss den Namensraum am Anfang der Datei vor jedem anderen Code deklarieren – mit einer Ausnahme: dem Schlüsselwort „declare“.

Hier gibt es kein Deklarationsschlüsselwort, also ist dies vielleicht ein Fehler im Quellcode, der der PHP-Version des Entwicklers entgeht, weil er den Namensraum nicht an die erste Stelle setzt:

<?php
class BulletProofException extends Exception{}

namespace BulletProof;
/**
 * BulletProof ImageUploder:
...

  • Verdammt, BOM! Erwischt mich jedes Mal.

    – Jan

    6. September 2015 um 21:53 Uhr

Wenn Sie eine IDE verwenden, müssen Sie Ihren Code in der allerersten Zeile beginnen. Beispiel Ich verwende Aptana Studio3

//line1<?php
//line2  your code
//line3  your code
....
....

Hoffe, es hilft. Das löst mein Problem.

  • Verdammt, BOM! Erwischt mich jedes Mal.

    – Jan

    6. September 2015 um 21:53 Uhr

Benutzer-Avatar
Danila Pjatow

Datei | Stückliste entfernen in PhpStorm hat dieses Problem in beiden Fällen behoben, in denen ich darauf gestoßen bin.

  • Das war genau mein Problem und meine Lösung. Vielen Dank!

    – reformiert

    11. Januar 2019 um 15:51 Uhr

  • Das war das Problem, das ich hatte. Das BOM zählt als Whitespace vor dem PHP-Tag. Mit Vim, set nobomb | wq wird die Stückliste entfernen.

    – Benjifischer

    16. Februar 2021 um 18:14 Uhr


1328320cookie-checkSchwerwiegender Fehler: Namespace-Deklarationsanweisung muss die allererste Anweisung im Skript sein in

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy