Cómo instalar Laravel 4 en una subcarpeta de host web sin exponer públicamente /app/ folder?
Me preguntaba si alguno de ustedes conoce una forma de instalar Laravel 4 en un SUBDIRECTORIO / subcarpeta de host web sin exponer la carpeta /app/ y otros archivos sensibles a la parte públicamente accesible del host.
La idea es, sería capaz de acceder http://mydomain.com/mylaravel / para poder usar Laravel, pero al mismo tiempo quiero evitar que alguien haga algo como ir a http://mydomain.com/app / o http://mydomain.com/mylaravel/app / y básicamente poder ver mis archivos de configuración y otro código.
9 answers
Así que descubrí cómo hacer esto. Lo explicaré con un ejemplo.
Supongamos que un dominio, http://domain.com . Aquí hay un ejemplo de la estructura que podría estar utilizando:
domain.com/ (the root of your web hosting)
|-- yourlaravel4_base/
|-- [some other folders...]
|-- public_html/ (where your html files and such go)
| |-- [some other folders...]
| |-- yourlaravel4/
/public_html/
es la raíz de la parte de acceso público de sus archivos de alojamiento web.
Desea crear una subcarpeta en /public_html/
(en este caso /public_html/yourlaravel4/
). En esta subcarpeta almacenará todos los contenidos de la carpeta Laravel 4 public/
.
Ahora, para el resto de los archivos. Usted tiene que ir a la raíz de sus archivos de alojamiento web, es decir, quiere estar en el nivel domain.com/
, por lo tanto, ser capaz de ver public_html/
y algunas otras carpetas. Luego, necesitamos crear una carpeta aquí, donde se almacenarán los archivos base de Laravel 4. En este caso, es domain.com/yourlaravel4_base/
. Dentro de yourlaravel4_base/
necesitamos almacenar todos los archivos y carpetas que existen en el directorio base Laravel 4. Que sería app/
, bootstrap/
, vendor/
, server.php
, etc. Todo EXCEPTO la carpeta /public/
, cuyo contenido ya ha almacenado public_html/yourlaravel4/
.
Finalmente, necesitamos editar 2 archivos: los de Laravel /bootstrap/paths.php
y /public/index.php
.
En el archivo paths.php
, sustitúyase:
'app' => __DIR__.'/../app',
Con:
'app' => __DIR__.'/../../yourlaravel4_base/app',
En el archivo paths.php
, sustitúyase:
'public' => __DIR__.'/../public',
Con:
'public' => __DIR__,
En el archivo paths.php
, sustitúyase:
'base' => __DIR__.'/..',
Con:
'base' => __DIR__.'/../../yourlaravel4_base',
En paths.php
, sustitúyase:
'storage' => __DIR__.'/../app/storage',
Con:
'storage' => __DIR__.'/../../yourlaravel4_base/app/storage',
En index.php
, sustitúyase:
require __DIR__.'/../bootstrap/autoload.php';
Con:
require __DIR__.'/../../yourlaravel4_base/bootstrap/autoload.php';
En index.php
, sustitúyase:
$app = require_once __DIR__.'/../bootstrap/start.php';
Con:
$app = require_once __DIR__.'/../../yourlaravel4_base/bootstrap/start.php';
Cambios en la carga. Ahora debería poder tener Laravel 4 instalado en una subcarpeta de su sitio web sin exponer realmente la carpeta app/
y otros archivos confidenciales. :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-16 07:48:56
Puede usar un alias: no hankey-pankey con directorios extendidos en su sistema.
Especifique en su httpd.conf o panel de administración:
/mylaravel/ /path/to/laravel/public
Además, especifique la URL en la aplicación de su Laravel.php
Línea 29
'url' => 'http://yourdomain.com/mylaravel/',
Finalmente establece la RewriteBase en tu /public/.htaccess
RewriteBase /mylaravel/
Funciona como un encanto y mantiene su estructura de directorios limpia y al grano!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-23 15:32:26
¡Gente, gente! No hay necesidad de complicar las cosas!
(Para otras carpetas públicas, como htdocs
o www
simplemente reemplace public_html
en la siguiente con la suya.)
- Ponga todas sus cosas de Laravel en la carpeta de nivel superior (de modo que la carpeta
app
esté al lado de la carpetapublic_html
) - Mueva todos los archivos de
public
apublic_html
(asegúrese de mover también los archivos ocultos, como.htaccess
!) - Elimina la carpeta ahora vacía
public
-
En
bootstrap/path.php
cambio'public' => __DIR__.'/../public',
a'public' => __DIR__.'/../public_html',
- Hecho.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-08 02:14:46
La respuesta de Emmanuel no funciona para mí, pero hice algunos cambios para que funcionara . aunque usé mi raíz web para ser la fuente de un proyecto . ahí está. ; tengo la carpeta htdocs como una carpeta raíz, pero puede tener otra, como public_html, www, etc. puede reemplazar fácilmente mis htdocs con el que tiene .
Bien .
Mi dircetory
root/ htdocs .htaccess .override
Primero resolví todas las dependencias de laravel en mi localhost en Windows con composer . después de eso hice las maletas. todo el paquete en laravel4.Postal . en mi htdocs creo una carpeta laravel y subí y descomprimí el archivo zip en ella.
htdocs/ laravel/ app bootstrap public vendors ...
Así que después de descomprimir el archivo muevo todo en la carpeta pública a la carpeta htdocs
htdocs/ laravel packages .htaccess favicon.ico index.php robots.txt
Ahora tenemos que reescribir algunas rutas en htdocs/index.php y htdocs / laravel / bootstrap / paths.php
Pero permite abrir htdocs/laravel/bootstrap/paths.php . verías
'app' => __DIR__.'/../app',
¿Qué significa . significa que estamos de pie en htdocs / laravel/ bootstrap / path . y allí para que necesitamos salir de esta carpeta a la carpeta laravel y luego ir a la carpeta de la aplicación . ok . esta es la estructura del laravel para enrutamiento . si lo haces bien, puedes hacer que Laravel corra .
Buscar
'public' => __DIR__.'/../public',
Y cambiarlo a
'public' => __DIR__.'/../../htdocs',
(ha simple ) con uno (../) de estos, podemos subir una carpeta . así que ahora estamos en la carpeta Laravel . pero necesitamos estar en htdocs . así que tenemos que escribir otro (../) para llegar allí .
Abra htdocs/index.php y buscar
require __DIR__.'/../bootstrap/autoload.php';
Cámbialo por
require 'laravel/bootstrap/autoload.php';
Require es una función php incorporada, por lo que vamos a tratarla como un php simple . realmente no necesitamos el estilo laravel para obtener la carga automática.archivo php . así que simplemente quitarlo y ir para el estilo clásico
Buscar
$app = require_once __DIR__.'/../bootstrap/start.php';
Cámbialo por
$app = require_once 'laravel/bootstrap/start.php';
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-22 14:36:16
Si está tratando de ejecutar Laravel 5.1 en un espacio de alojamiento compartido y todas las respuestas anteriores parecen ser un poco diferentes de los archivos/carpetas reales de Laravel o está buscando cómo poner su laravel 5/5.1 en un subdirectorio en su espacio de alojamiento compartido para que pueda acceder a él de esta manera:
http://mywebsite.com/mylaravel/
Así que esta respuesta es para usted, en primer lugar, asegúrese de cumplir
Requisitos de Laravel 5.1:
- PHP 5.5
- PHP extension Mcrypt
- PHP extension Mbstring
- PHP extension OpenSSL
Aquí un fácil dos tutoriales para usted :
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-25 09:45:56
Si está utilizando el asistente addondomain o subdomaind en su panel ,el asistente debe pedirle la raíz del documento . por ejemplo, quiero añadir droidman.com , asistente debe sugerirme con hacer droidman.com carpeta . en este paso dile al asistente que haga droidman.com/public carpeta . a continuación, ponga su aplicación en droidman.com carpeta . tu anfitrión mirará la carpeta pública ;) . problema resuelto
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-10 20:16:46
Si simplemente desea configurar el proyecto Laravel en alojamiento compartido y tiene acceso a cPanel, puede seguir los pasos que he seguido y funcionó bien.
Paso 1 : Haga un archivo zip o tar de toda su aplicación Laravel en su máquina local.
Paso 2 : Vaya a Cpanel. Cargue el archivo zip / tar en el directorio public_html y luego extráigalo. (También puede crear una carpeta separada para su aplicación laravel. Como quiero subir más de una aplicaciones Laravel I han creado un directorio separado para cada uno como se muestra en la imagen de abajo.)
Paso 3 : Ahora vaya a 'Addon Domain' y cambie la raíz del documento de su dominio especificado. Apunte el dominio a la carpeta pública.
Ahora revise su dominio que redirigirá a public/index.archivo php. No hay necesidad de cambiar ningún camino.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-08 13:26:59
Si está utilizando un servidor apache, la forma más sencilla de hacerlo es alojar su aplicación Laravel fuera de la raíz www (o en una carpeta protegida en la raíz www) y luego enlazar simbólicamente la subcarpeta deseada para que apunte a la carpeta pública en laravel
Por ejemplo, coloco mis instalaciones laravel en:
/usr/local/share/myLaravel
Luego, en su carpeta www pública, cree un enlace simbólico de la siguiente manera:
ln -s /usr/local/share/myLaravel/public mylaravel
Tendrá que hacer algunos ajustes a su instalación, como poner su Base de reescritura a / mylaravel / y asegúrese de que sus archivos de configuración permiten sobreescrituras en la ubicación base, pero esto es más simple que modificar todo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-06-30 15:11:19
Asegúrese de comprobar sus permisos. He desplegado a través de la siguiente aunque no lo recomiendo.
Usé SSH e hice algo como:
rm -rf public_html/ // WARNING: READ NOTE AT THE BOTTOM BEFORE RUNNING
ln -s project_folder/public/ public_html // where the format is ln -s target name
Después, recibiría un mensaje como "Whoops, parece que algo salió mal" (o un error dependiendo de su configuración de depuración). Para arreglar esto, solo tuve que cambiar mis permisos a 755 para mis carpetas. referencia: http://kb.webhostface.com/laravel/fix-permission-denied-error-laravel
Generalidades, Voy a volver y probar la forma original con permisos cambiados, ya que encuentro que esta ruta es menos segura y más dependiente de mi servicio de alojamiento al cliente.
*****Nota***** Este comando obviamente elimina su carpeta public_html (también a veces llamada public o www). Es necesario tener una copia de seguridad de todos los archivos en él porque lo está eliminando. Además, deberá estar preparado para pasar por el servicio al cliente para restaurarlo. Muchos servicios de alojamiento no le permiten simplemente recrear la carpeta por su cuenta.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-12 00:32:24