php - servidor - symfony server run error
Symfony en el host virtual(problema de raĆz del documento) (3)
Estoy desarrollando una aplicación en Symfony y en localhost (XAMPP) Quiero simular las mismas condiciones que en el servidor web.
El servidor web está configurado de la siguiente manera:
/www => mydomain.com
/foo => foo.mydomain.com
/bar => bar.mydomain.com
...
Voy a poner mi aplicación Symfony en /www
direcotry para que haya:
/www
/www/apps
/www/apps/frontend
/www/apps/frontend/...
/www/apps/backend
/www/apps/backend/...
/www/cache
/www/config
... and so on...
/www/web
El problema es que la raíz del documento todavía está configurada en el directorio /www
, pero Symfony lo espera en /www/web
.
Por supuesto, funcionará si llamo a http://mydomain.com/web
pero supongo que comprenderá que esta es una solución silenciosa y estúpida.
Entonces mi pregunta es : ¿hay alguna manera de cómo puedo cambiar / eludir la configuración predeterminada de la raíz del documento usando .htaccess o lo que sea?
EDITAR: Lo resolví .
No sé mucho sobre Symfony pero /web
se supone que es la raíz del documento. Todos los otros directorios deben estar fuera de la raíz del documento por razones de seguridad para uno, y para evitar el /web
parte /web
en la URL de otro. Pero parece que ya lo sabes.
Si puede editar la configuración del servidor web, intente reflejar eso y configure DocumentRoot
en el directorio web.
Si no puede hacer eso: no es posible cambiar el DocumentRoot
en un archivo .htaccess
, pero es posible reescribir todas las solicitudes para que vayan a /web
internamente usando mod_rewrite
. Es kludgy, pero probablemente la mejor solución si no puede influir en DocumentRoot
.
No soy un gurú de mod_rewrite, así que no puedo dar un ejemplo (tendría que probarlo primero y no puedo hacerlo ahora) pero estoy seguro de que alguien lo hará. Tal vez agregue la etiqueta mod_rewrite
a su pregunta.
Actualización: no comprobado, pero debería funcionar. Poner en un archivo .htaccess
en /www
:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_URI} !^/web/
RewriteRule .* /web/%1 [QSA]
entonces necesitaría cambiar sus archivos de configuración para usar http://www.domain.com/
lugar de http://www.domain.com/web/
por supuesto.
No puedo decir si eso interfiere con otras reglas de .htaccess
en el extremo de Symfony, tendrías que probar.
Si tienes acceso a la configuración de Apache, es mejor mover la raíz del documento desde /www
a /www/web
en tu configuración virtualHost y permitir que php (si está restringido por la directiva de configuración open_basedir
) acceda al directorio completo /www
.
Cambie la forma en que Symfony espera que su directorio sea nombrado:
// config/ProjectConfiguration.class.php
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
$this->setWebDir($this->getRootDir().''/www/or/whatever/directory'');
}
}