Development

Instalar Larvel 5.1 en un sub directorio usando un servidor compartido

Vamos a ser sinceros, hacer funcionar Laravel 5.1 en nuestro servidor compartido sin SSH habilitado es una patada en los testículos para los que comenzamos a usar Laravel y queremos verlo funcionar en un servidor.

No hay que negar que hay muchas personas que están dispuestas ayudarnos en los foros de http://laravel.io y https://laracasts.com o en Stack Overflow por mencionar algunos sitios, pero luego de probar distintas soluciones que no me iban del todo bien que encontré en dichos sitios he dado con la solución de como hacer funcionar nuestra app hecha en Laravel 5.1 en un sub directorio en nuestro servidor compartido.

Estos son los pasos para verlo en acción:

  • Subir todo el contenido de nuestro proyecto(a excepción de la carpeta public) fuera de la carpeta public_html de nuestro hosting
  • Crear un sub directorio dentro de public_html y colocar nuestra carpeta public allí(en mi caso renombre la carpeta public por demo)
  • Luego editamos el archivo server.php el cual se encuentra fuera de la carpeta public_html; reemplaza en las lineas 17 y 21 y coloca la ruta del sub directorio de tu proyecto,  en mi caso se llama demo y esta dentro de public_html.
<?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylorotwell@gmail.com>
 */

$uri = urldecode(
    parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
);

// This file allows us to emulate Apache's "mod_rewrite" functionality from the
// built-in PHP web server. This provides a convenient way to test a Laravel
// application without having installed a "real" web server software here.
if ($uri !== '/' && file_exists(__DIR__.'/public_html/demo'.$uri)) {
    return false;
}

require_once __DIR__.'/public_html/demo/index.php';
  • Ahora abre el archivo index.php que esta dentro de la sub carpeta en donde va a estar tu aplicación(en mi caso es la carpeta demo) y modifica las lineas 22 y 36 en donde estan el require y la variable $app por:
<?php

/**
 * Laravel - A PHP Framework For Web Artisans
 *
 * @package  Laravel
 * @author   Taylor Otwell <taylorotwell@gmail.com>
 */

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels nice to relax.
|
*/

require __DIR__.'/../../bootstrap/autoload.php';

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

$app = require_once __DIR__.'/../../bootstrap/app.php';

/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);

$response->send();

$kernel->terminate($request, $response);

  • Por ultimo editamos el archivo .htaccess el el sub directorio que creamos(mi carpeta demo) con el siguiente contenido:
<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes If Not A Folder...
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

¡Listo! Si accedes a tu URL http://www.tudominio.com/demo/ deberías poder ver Laravel 5.1 en tu servidor.

ACTUALIZACION: Verifica que la versión de PHP en tu servidor es 5.6 o superior.

Advertisements

2 thoughts on “Instalar Larvel 5.1 en un sub directorio usando un servidor compartido

    1. Hola German,

      Si lees bien en el artículo dice cuales archivos debes modificar.
      En caso no te hayas dado cuenta son server.php e index.php(este es el archivo esta dentro de tu sub carpeta)

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s