Buenas tardes:
Lo primero, dar la enhorabuena por el portal y su magnífica labor. Ahora al tema de la consulta ;) El caso es que estoy empezando con Silex y al ejecutar la consola para generar las entidades vía doctrine, me devuelve el siguiente mensaje: Could not open input file: console
Estoy utilizando la versión de Fabien Potencier, skeleton.
Muchas gracias.
Saludos.
Respuestas
Lo primero, muchas gracias por tus comentarios sobre este sitio.
Con respecto a tu pregunta: me resulta raro que vayas a generar las entidades de Doctrine con el skeleton de Fabien. El motivo es que Silex sólo incluye el proyecto DBAL de Doctrine, por lo que ni puedes generar las entidades ni puedes usarlas aunque las generes a mano. La única solución sería utilizar alguno de los service providers no oficiales que existen para silex y que permiten integrar el ORM de Doctrine.
Con respecto al error, si descartamos todos los errores básicos (no puedes ejecutar el comando php
en la consola porque no lo tienes configurado en el PATH, el archivo console
no existe o se ha movido a otro directorio, etc.) la causa más probable del error es que no tengas permisos para ejecutar ese archivo. No nos dices el sistema operativo que usas, pero si es Linux o Mac OS X, puedes ejecutar directamente el siguiente comando para hacer que el archivo console
se pueda ejecutar:
$ chmod +x console
![](https://pbs.twimg.com/profile_images/937401117608161280/wh03niqP_normal.jpg)
@javiereguiluz
Hola de nuevo:
Aunque estoy usando el skeleton de Fabien Potencier, he agregado nuevos providers siguiendo un tutorial de Asier Marqués: Silex con Doctrine DBAL y ORM, así que he incluido los siguientes proveedores:
- doctrine/dbal
- symfony/doctrine-bridge
- dflydev/doctrine-orm-service-provider
En cuanto al sistema, es Windows 7, y tengo en principio todo configurado, porque, de hecho, en otras pruebas que he hecho con Symfony, he podido utilizar sin ningún problema la consola.
He probado a invocar directamente al fichero mediante:
$ php console.php
y en este caso, el error que me devuelve es el siguiente:
Fatal error: Class 'Symfony\Component\Console\Application' not found in E:\Silex\src\console.php on line 9 Call Stack: 0.0250 122440 1. {main}() E:\PHP\WF\MAI_Silex\src\console.php:0
El fichero console.php
tiene el siguiente contenido:
<?php use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; $console = new Application('My Silex Application', 'n/a'); $console->getDefinition()->addOption(new InputOption('--env', '-e', InputOption::VALUE_REQUIRED, 'The Environment name.', 'dev')); $console->setDispatcher($app['dispatcher']); $console ->register('my-command') ->setDefinition(array( // new InputOption('some-option', null, InputOption::VALUE_NONE, 'Some help'), )) ->setDescription('My command description') ->setCode(function (InputInterface $input, OutputInterface $output) use ($app) { // do something }) ; return $console;
No sé si faltaría algo más de información, con lo que sea, la facilito.
Muchas gracias de nuevo.
![](https://pbs.twimg.com/profile_images/2112183171/yo_peque_normal.png)
@jesusjbm
Me parece que ya se lo que puede estar pasando: estás ejecutando directamente el archivo src/console.php
en vez del archivo binario bin/console
.
Al igual que sucede con Symfony, Silex proporciona un archivo PHP ejecutable llamado console
que es el punto de entrada de todos los comandos de la consola. Aunque internamente este archivo console
llama al otro archivo console.php
(lo mismo sucede en Symfony), es importante ejecutar solamente el primero.
El motivo es que el archivo bin/console
es el que se encarga de activar la "carga automática de clases" de PHP mediante esta línea:
require_once __DIR__.'/../vendor/autoload.php';
Sin esa línea, PHP no sabe encontrar ninguna clase y por eso te está dando error en la primera línea que intenta cargar una clase:
use Symfony\Component\Console\Application; // ... Fatal error: Class 'Symfony\Component\Console\Application' not found in E:\Silex\src\console.php on line 9
![](https://pbs.twimg.com/profile_images/937401117608161280/wh03niqP_normal.jpg)
@javiereguiluz
¡Muchas gracias! Efectivamente era eso.
Ya puedo ejecutar comandos desde la consola de Silex. No hay nada como saber.
Un saludo y gracias de nuevo.
![](https://pbs.twimg.com/profile_images/2112183171/yo_peque_normal.png)
@jesusjbm