two print nombres nombre namespace mismo example espacio error con clases php image-upload

print - two namespaces php



Error grave: la declaración de declaración del espacio de nombres debe ser la primera declaración del script en (19)

A veces, el espacio después de <?php visible si está utilizando el mismo editor, en mi caso, estaba usando TextWrapper. Debido a la configuración del tipo de archivo en el TextWrapper (en su caso, algún otro editor), es posible que no vea el espacio. Usa un editor diferente en tu máquina y lo verás. Luego quítalos - funciona perfectamente después.

Estoy tratando de usar esto para crear una carga de formulario de imagen para mi sitio web, la razón por la que lo uso es porque es más seguro que hacer todo por mí mismo (pero si alguien pudiera señalar otro script de trabajo , sería apreciado)

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

Mirando el código fuente:

<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 />

He intentado con incluye, requiere y todavía no funciona.


A veces, este problema se debe al espacio en la etiqueta de inicio de PHP del controlador que enfrenta el mismo problema que acaba de eliminar los espacios en blanco en:

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

Eliminar el espacio resolvió mi error.


Acabo de descubrir una manera fácil de plantear esta excepción; deje su editor de texto predeterminado para guardar como UTF-8. A menos que pueda forzarlo a omitir la marca de orden de bytes, que puede no ser fácil o incluso posible, dependiendo de su editor, tendrá un "carácter" delante de la abertura <, que estará oculto a la vista.

Afortunadamente, cuando esa posibilidad cruzó mi mente, cambié mi editor (UltraEdit) al modo hexadecimal, que no oculta nada, ni siquiera las marcas de orden de bytes. Después de haber escrito un código que procesa las marcas de orden de bytes durante muchos años, lo reconocí al instante.

Guarde el archivo como ANSI / ASCII y acepte la página de códigos predeterminada ANSI Latin-1 1252, ¡problema resuelto!


Asegúrese de que no haya espacios en blanco antes de su etiqueta php

// whitespace <?php namespace HelloWorld ?>

Eliminar el espacio en blanco antes de que comience su etiqueta php

<?php namespace HelloWorld ?>


Debe cambiar la codificación del archivo a ANSI . Estaba usando Notepad ++ con codificación UTF-8 y tuve el mismo problema. ¡El problema desapareció después de cambiar la codificación del archivo a ANSI !


Edite ImageUploader.php: elimine la línea (porque BulletProofException no se usa en ninguna parte)

class BulletProofException extends Exception{}

o moverlo debajo de la línea

namespace BulletProof;


En mi caso, el archivo se creó con la codificación UTF-8-BOM. Tengo que guardarlo en la codificación UTF-8, entonces todo funciona bien.


Espacio de nombres declarat 123456789101112

<?php namespace app/controllers; use yii/web/Controller; use app/models/users; class UserController extends Controller { public function actionIndex() { echo "working on ....."; } }


Hay un error en su fuente. Echa un vistazo a su fuente si puedes. Se lee asi

<?php class BulletProofException extends Exception{} namespace BulletProof; ....

Eso es una locura. Personalmente, diría que el código está bien documentado y es elegante, pero el autor no vio un punto simple; Declaró el espacio de nombres dentro de la clase. El espacio de nombres siempre que se use debe ser la primera declaración.

Lástima que no estoy en Github; podría haber sacado una solicitud de lo contrario :(


La biblioteca no funciona en absoluto, setSizeLimit está roto, setImageSize se ignora y, bueno, no uses esto.

$result = $newUpload ->setFileTypes(array("jpg", "gif", "png", "jpeg")) ->setSizeLimit(array("min"=>100, "max"=>100000)) ->setImageSize(array("height"=>200, "width"=>200)) ->uploadTo(''ads/'') ->save($_FILES[''newad_image'']); $page.=$result;

Da esto:

Notice: Undefined offset: 1 in C:/xampp/htdocs/project/lib/ImageUploader.php on line 229 Notice: Undefined offset: 0 in C:/xampp/htdocs/project/lib/ImageUploader.php on line 229

EDITAR: El tamaño parece estar en bytes, aunque el error dice Kilobytes.


Lo arreglé de esta manera cuando comencé. No importa utf8. De esta manera, abra <?php en la primera línea en el editor, en mi caso, texto sublime y el espacio de nombres escrito en la segunda línea.

2 <?php namespace mynamespace; // debería escribir su espacio de nombres en el lugar donde abre php aquí debería estar en la línea 3 aquí, hago el error porque empecé a abrir desde la línea 2 <?php

1 <?php namespace mynamespace; // Comencé desde la línea 1 <?php it WORK


Se trata de la declaración de namespace . De acuerdo con http://php.net/manual/en/language.namespaces.definition.php toda la declaración de namespace debe colocarse en la parte superior del archivo después de la etiqueta <?php apertura <?php . Esto significa que antes de escribir cualquier código en el archivo, si ese archivo debe estar contenido en un namespace , primero debe declarar el namespace antes de escribir cualquier código. Me gusta esto:

<?php namespace App/Suport/Facades; class AuthUser { // methods and more codes }

PERO la palabra clave declare se puede colocar antes de la declaración de namespace por lo que sigue siendo válida:

<?php declare(maxTries = 3); namespace App/Suport/Facades; class AuthUser { // methods and more codes }

todas las demás cosas deben ponerse DESPUÉS de la palabra clave del namespace . Para obtener más información, lea el http://php.net/manual/en/language.namespaces.definition.php .


Si desea usar esta biblioteca, entonces en ImageUploader.php debe mover la definición de BulletProofException después de la declaración de espacio de nombres. Enviar solicitud de extracción para este problema a lib repo :)

EDITAR: hacer algunos cambios en el jefe de archivo:

namespace { class BulletProofException extends Exception{} } namespace BulletProof { class ImageUploader { ... } }


Si está utilizando un IDE, debe iniciar su código en la primera línea. ejemplo estoy usando aptana studio3

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

Espero que ayude. Eso resuelve mi problema ,.


Si te fijas en este archivo, el espacio de nombres no es la primera declaración.

<?php class BulletProofException extends Exception{} namespace BulletProof;

Puede intentar mover el espacio de nombres sobre la definición de clase.


También he enfrentado el problema. En el archivo php, he escrito el siguiente código donde había espacio antes de la etiqueta de inicio de php

<?php namespace App/Controller;

Cuando quito ese espacio, se solucionó.


También tengo el mismo problema al copiar el código del controlador de otro controlador, luego resuelvo el problema eliminando el espacio antes de la etiqueta php

<?php


Este hilo parece estar hablando del mismo problema: parece que este error generalmente se debe a que algunos datos se envían fuera del servidor antes de que se encuentre la declaración de espacio de nombres.

  1. ¿Podría su alojamiento web insertar algún código en su página antes del código PHP?
  2. ¿Hay una marca de orden de bytes UTF-8 al principio del documento?

Por otro lado, también podría ser un error en ImageUploader ... el archivo PHP principal coloca el espacio de nombres después de la definición de la clase, que no he visto en la documentación de PHP, que dice que debería ser el primer código PHP. Desde esta página :

Los espacios de nombres se declaran utilizando la palabra clave del espacio de nombres. Un archivo que contenga un espacio de nombres debe declarar el espacio de nombres en la parte superior del archivo antes de cualquier otro código, con una excepción: la palabra clave declarar.

Aquí no hay ninguna palabra clave de declaración, por lo que quizás se trate de un error en el código fuente que se desliza por la versión de PHP del desarrollador, porque no pone el espacio de nombres primero:

<?php class BulletProofException extends Exception{} namespace BulletProof; /** * BulletProof ImageUploder: ...


Archivo | Eliminar BOM en PhpStorm solucionó este problema en ambos casos que lo encontré.