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'');
}
}