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)
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
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
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
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!
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.
Könnte Ihr Webhosting vor dem PHP-Code Code in Ihre Seite einfügen?
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:
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