Laravel

Qué hacer cuando necesitas subir una app de Laravel a un hosting compartido?

Autorangel cruz
Actualizado
Publicado
Lectura4 min de lectura
Qué hacer cuando necesitas subir una app de Laravel a un hosting compartido?

Laravel

Lo primero que debemos saber es qué versión de PHP requiere Laravel. Te la indica el require de php en el composer.json de la versión que subes (Laravel 13, por ejemplo, pide PHP 8.3 o superior según el composer.json de laravel/framework). Se está tomando este criterio como el primer aspecto ya que puedes tener los siguientes pasos correctamente que si no se ha fijado la versión del php que sea la correcta no va a funcionar el sitio, y es entonces cuando llegan los dolores de cabeza. Cómo sabemos que versión de php está utilizando nuestro hosting. Para ello entramos en el Cpanel y nos dirigimos a un botón llamado Select Php Version, una vez dentro se mostrará un combobox con las versiones de php soportadas por el hosting; elige una que cumpla la versión mínima de tu Laravel.

Un tip de este hosting para que el mismo muestre los errores de php es el siguiente. Dentro del Cpanel buscamos un botón llamado MultiPHP INI Editor luego escogemos en el combobox que aparece nuestro dominio y después la opción display _errors la cambiamos a true. De esta manera cuando el framework nos envíe un mensaje de error vamos a saber cual es el problema en la consola.

Lo siguiente será crear una carpeta en el root del hosting con el nombre que deseamos, en nuestro caso la hemos llamado laravel Ahora en la carpeta donde está nuestro sistema seleccionaremos todos los archivos y carpetas menos la carpeta llamada public y creamos un .zip con los mismos llamada (zip1). Luego de esto se realiza lo mismo con los archivos que están dentro de la carpeta public en este caso sería (zip2).

Los archivos que están en zip1 hay que copiarlos en la carpeta llamada laravel que creamos en el root del hosting mientras que el zip2 será para la public_html del hosting, estas tareas las realizamos utilizando el File Manager del hosting ya que si utilizan algún gestor ftp no necesitan compactar los archivos, solo copiar todos los archivos y carpetas de nuestro servidor en las carpetas laravel y public_html. El siguiente paso es editar el index.php que se encuentra en el public_html y cambiar la dirección donde van a estar las carpetas de storage, bootstrap y vendor del framework, para esto buscamos las líneas correspondientes a lo antes mencionado en el archivo index.php y agregamos después de cada ../ la carpeta laravel/, quedando de la siguiente manera.

if (file_exists($maintenance = __DIR__.'/../laravel/storage/framework/maintenance.php')) {
    require $maintenance;
}
 
require __DIR__.'/../laravel/vendor/autoload.php';
$app = require_once __DIR__.'/../laravel/bootstrap/app.php';

Luego de esto vamos a la carpeta laravel creada en el root del hosting, a la siguiente dirección: laravel/app/Providers/AppServiceProvider.php y editamos dicho archivo, en la función llamada register agregamos el siguiente código, que es para decirle al framework que el nombre de la carpeta public cambió el nombre y el pueda utilizarla para sus funciones específicas. Desde Laravel 10, public_path() lee la ruta con $app->publicPath() y ya no con el binding path.public del contenedor, así que el cambio se hace con usePublicPath() (lo puedes ver en el Application.php de laravel/framework):

$this->app->usePublicPath(base_path().'/public_html');

Con esta configuración la carpeta public_html quedará dentro de la carpeta laravel que es su raíz, en caso de querer cambiar la dirección para que los archivos no se guarden dentro de la raíz, se tendrá que cambiar el nombre de public_html por el nombre de la carpeta en que se deseen alojar los archivos. Por ejemplo: Si queremos subir imágenes al servidor pero que las mismas puedan ser vistas desde una url tenemos que alojarlas en donde están los archivos públicos del laravel, en este caso sería el dominio. Cómo quedaría:

$this->app->usePublicPath(base_path().'/../mi_dominio.com');

Ya realizado estos cambios se puede comprobar si el sistema está funcionando correctamente.

Un video para que entiendan mejor: https://www.youtube.com/watch?v=ejcClKFLrW0 Si el siguiente error que te encuentras es de permisos al limpiar la caché, tiene su propio artículo. Los dos, y el resto del camino a producción, en Laravel en producción.

¿Tienes un proyecto en mente?

Trabajo con Laravel, WordPress, SEO técnico y servidores MCP. El primer paso es una llamada de descubrimiento, sin costo ni compromiso, donde me cuentas qué necesitas y te digo con honestidad si puedo ayudarte.

Hablemos