symfony2 servidor run iniciar error configurar php mod-rewrite symfony1 xampp shared-hosting

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