Foros del Web » Programando para Internet » PHP » Symfony »

[SOLUCIONADO] URL raíz proyecto Symfony2

Estas en el tema de URL raíz proyecto Symfony2 en el foro de Symfony en Foros del Web. Hola, gracias por leerme, tengo un proyecto personal semiacabado creado con Symfony2, trabajo en local, y en el Document Root del servidor web (Apache) tengo ...
  #1 (permalink)  
Antiguo 25/09/2013, 15:22
Avatar de Crazylegs  
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 10 años, 7 meses
Puntos: 14
Pregunta URL raíz proyecto Symfony2

Hola, gracias por leerme, tengo un proyecto personal semiacabado creado con Symfony2, trabajo en local, y en el Document Root del servidor web (Apache) tengo la siguiente estructura:
/symfony
/forums


Dentro de la carpeta symfony se encuentran los directorios típicos de Symfony2 (app, bin, src, vendor, web...) ; la carpeta forums son los foros de la web creados con phpbb3, al cual hay enlaces en la aplicación Symfony.

Para acceder a la página de inicio de mi aplicación web debo escribir en la barra de direcciones: http://localhost/symfony/web/ , sin embargo, lo que yo quiero conseguir es que con http://localhost/ acceda a la página de inicio, sin que afecte el acceso a /forums, es decir, que pueda acceder (si hace falta mover la carpeta /forums no es problema).

Lo quiero así porque cuando la publique, por ejemplo, con el dominio www.symfony2.com al acceder a él acceda a la página de inicio. (corregidme si me equivoco)

Supongo que tengo que tocar los .htacces, pero la verdad es que ando muy perdido con ese tema, y no encuentro buenos tutoriales sobre el tema.
  #2 (permalink)  
Antiguo 26/09/2013, 07:00
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: URL raíz proyecto Symfony2

Tenés q crear un virtual host, en maestrodelweb hay un buen articulo o en google hay mucho tabien. Esto te permite crear por ejemplo miproyecto.dev o .local

Saludos.
  #3 (permalink)  
Antiguo 27/09/2013, 10:14
Avatar de Crazylegs  
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 10 años, 7 meses
Puntos: 14
Respuesta: URL raíz proyecto Symfony2

Cita:
Iniciado por lisandro Arg Ver Mensaje
Tenés q crear un virtual host, en maestrodelweb hay un buen articulo o en google hay mucho tabien. Esto te permite crear por ejemplo miproyecto.dev o .local

Saludos.
Gracias por responder, nunca he utilizado virtualhost, he mirado por google y tal, pero creo que no es lo que necesito, me explico, yo lo único que quiero es acceder con http://localhost en lugar de con http://localhost/symfony/web/ en mi aplicación web en local.

Lo de www.symfony2.com o www.miaplicacion.com o cúal sea mi dominio, lo comentaba, solo en el caso de cuando termine el proyecto y lo suba a algún hosting con un dominio, para tenerlo preparado ya, simplemente esta parte ignoradla.

Disculpa, reconozo que me explicado mal, y me he ido por las ramas.

De todas formas gracias.
  #4 (permalink)  
Antiguo 27/09/2013, 13:35
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: URL raíz proyecto Symfony2

sólo necesitas mover tu app.php y el .htaccess al wwwroot de tu servidor local, y cambiar las rutas del app.php para que consiga el Core de Sf2.

aunque la opción de usar virtual host es mucho mejor, porque te permite tener más proyectos, del modo anterior no podrás acceder a otras aplicaciones php que tengas
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 27/09/2013, 14:39
Avatar de Crazylegs  
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 10 años, 7 meses
Puntos: 14
Respuesta: URL raíz proyecto Symfony2

Buenas, lo que he hecho es lo que me has comentado, he movido todo el contenido de web a la raíz y he cambiado las rutas, ahora con http://localhost accedo a la web, todo funciona perfecto, solo hay el fallo del /forums que no me lo encuentra, ya que no pertenece a la aplicación.

Entonces mi duda es: si uso virtualhost en local, ¿podré aplicar en un futuro, cuando publique la aplicación, estos virtualhosts en un hosting con un dominio reservado?, de no ser así, ¿como podría hacerlo? ¿como podria conseguir con /.htacces que si la petición es /forums no lo gestione /app.php sino que simplemente acceda a /forums?

Gracias por vuestro tiempo.
  #6 (permalink)  
Antiguo 27/09/2013, 15:15
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: URL raíz proyecto Symfony2

sí, con virtualhost puedes hacer todo eso, es lo mismo que usan los servers con subdominios, lo único que debes hacer en tu localhost para emularlo es añadir los dominios a tu archivo hosts en el Sistema operativo (todos tienen uno) apuntando a tu localhost (127.0.0.1), que es como tu DNS local

ejemplo archivo hosts:

Código hosts:
Ver original
  1. 127.0.0.1    localhost
  2. 127.0.0.1    www.sitioemulado.com
  3. 127.0.0.1    www.foros.sitioemulado.com

ejemplo del archivo sites-enabled/000-default de apache:

Código Apache:
Ver original
  1. <VirtualHost *:80>
  2.         ServerName www.sitioemulado.com
  3.         DocumentRoot "/var/www/misitiosymfony/www"
  4.         DirectoryIndex app.php
  5.         <Directory "/var/www/misitiosymfony/www">
  6.                 AllowOverride All
  7.                 #Allow from All
  8.         </Directory>
  9. </VirtualHost>
  10.  
  11. <VirtualHost *:80>
  12.         ServerName www.foros.sitioemulado.com
  13.         DocumentRoot "/var/www/foro/www"
  14.         DirectoryIndex app.php
  15.         <Directory "/var/www/foro/www">
  16.                 AllowOverride All
  17.                 #Allow from All
  18.         </Directory>
  19. </VirtualHost>

de ésta forma, cuando intentes acceder por el navegador a www.sitioemulado.com, tu OS redireccionará a 127.0.0.1 como se indica en el archivo de hosts, cuando le llega a apache la petición, le llega como www.sitioemulado.com y usa la información de dicho virtualhost, llamando al app.path del DocumentRoot asignado para tal sitio, realmente es algo fantástico para hacer verdaderas prebas locales con el nombre del dominio real

Nota: cuando subas el sitio al dominio real, debes eliminarlo del archivo de host, de lo contrario siempre estarás viendo el de tu local
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 27/09/2013 a las 15:20
  #7 (permalink)  
Antiguo 29/09/2013, 10:12
Avatar de Crazylegs  
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 10 años, 7 meses
Puntos: 14
Respuesta: URL raíz proyecto Symfony2

Hola maycolalvarez, basandome en tu útlimo mensaje he hecho lo siguiente:

He añadido estas 2 lineas a C:\Windows\System32\drivers\etc\hosts:
Código:
127.0.0.1    www.midominio.com
127.0.0.1    www.foros.midominio.com
Y en C:\xampp\apache\conf\httpd.conf he añadido:
Código:
    <VirtualHost *:80>
            ServerName www.midominio.com
            DocumentRoot "C:/xampp/htdocs/symfony/web"
            DirectoryIndex app.php
            <Directory "C:/xampp/htdocs/symfony/web">
                    AllowOverride All
                    #Allow from All
            </Directory>
    </VirtualHost>
     
    <VirtualHost *:80>
            ServerName www.foros.midominio.com
            DocumentRoot "C:/xampp/htdocs/forums"
            <Directory "C:/xampp/htdocs/forums">
                    AllowOverride All
                    #Allow from All
            </Directory>
    </VirtualHost>
Como ves estoy trabajando en Windows en lugar de en Linux.

Una vez hecho lo anterior tecleo en el navegador web: www.midominio.com, pero me da este error:
Código:
Warning: require_once(C:/xampp/htdocs/symfony/web/forums/common.php): failed to open stream: No such file or directory in C:\xampp\htdocs\symfony\src\Mi\MiBundle\phpbb\phpbb.php on line 31

Fatal error: require_once(): Failed opening required 'C:/xampp/htdocs/symfony/web/forums/common.php' (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\symfony\src\Mi\MiBundle\phpbb\phpbb.php on line 31
phpbb.php es una clase php que gestiona los usuarios(login, logout, altas, bajas, etc) de los foros phpbb de /forums y esta es utilizada desde la aplicación symfony (ya que utiliza la aplicación symfony utiliza los mismos usuarios que los foros).

Para que esta clase pueda funcionar necesita la ruta completa del foro hasta el archivo common.php, pero al utilizarla desde el virtualhost de la aplicación symfony $_SERVER["DOCUMENT_ROOT"] devuelve C:/xampp/htdocs/symfony/web a lo cual le concatena /forums/common.php (porque antes estaba en la raíz).

Lo que he probado es acceder con URL al foro, es decir en la clase phpbb:
Código PHP:
require_once("http://www.foros.midominio.com/common.php"); 
pero el archivo common.php no es accesible por URL.

¿Como consigo la ruta absoluta de /forums/common.php del virtualhost www.foros.midominio.com desde el virtualhost www.midominio.com?
  #8 (permalink)  
Antiguo 11/10/2013, 14:07
Avatar de Crazylegs  
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 10 años, 7 meses
Puntos: 14
Respuesta: URL raíz proyecto Symfony2

Bueno, doy el tema como solucionado, al final he optado por el .htaccess, ya que con los virtualhost me dejaban de funcionar los foros y no entendí el porqué.

La solución a la que he llegado, bastante simple, por si a alguien en un futuro le pueda interesar:

En el .htaccess de la raíz he añadido las dos lineas predecidas por el comentario # Forums:

Código:
    
    # If the requested filename exists, simply serve it.
    # We only want to let Apache serve files and not directories.
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule .? - [L]
	
	# Forums
	RewriteCond %{REQUEST_URI} /forums/ [NC]
	RewriteRule .? /forums/index.php [L]
	
    # Rewrite all other queries to the front controller.
    RewriteRule .? %{ENV:BASE}/app.php [L]
Tema solucionado.
  #9 (permalink)  
Antiguo 11/10/2013, 16:38
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: URL raíz proyecto Symfony2

Cita:
Iniciado por Crazylegs Ver Mensaje
Para que esta clase pueda funcionar necesita la ruta completa del foro
Una solucion hubiera sido llegar por ruta relativa (../../) hasta la carpeta forum, otra usar set_include_path() para agregar esa carpeta ya que la funcion require busca los archivos en las carpetas del include_path, entre otras.
  #10 (permalink)  
Antiguo 12/10/2013, 04:17
Avatar de Crazylegs  
Fecha de Ingreso: septiembre-2013
Ubicación: Barcelona
Mensajes: 74
Antigüedad: 10 años, 7 meses
Puntos: 14
Respuesta: URL raíz proyecto Symfony2

Cita:
Iniciado por lisandro Arg Ver Mensaje
Una solucion hubiera sido llegar por ruta relativa (../../) hasta la carpeta forum, otra usar [URL="http://www.php.net/manual/es/function.set-include-path.php"]set_include_path()[/URL] para agregar esa carpeta ya que la funcion require busca los archivos en las carpetas del include_path, entre otras.
Sí, llegué a la conclusión de la ruta relativa, el problema es que cuando ingresaba a www.foros.midominio.com me lanzaba un error interno (500), miré en el log de errores de apache pero no lo entendía, así que opté por el .htaccess.

Un saludo y gracias por vuestra ayuda.

Etiquetas: aplicacion, php, raiz, root, symfony2, url
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:09.