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)
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.
- ¿Podría su alojamiento web insertar algún código en su página antes del código PHP?
- ¿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é.