Hola y bienvenidos a este video.
Uno de los errores mas comunes que nos podemos encontrar al trabajar con Laravel desde sus versiones 5.6 hasta la actual que es la versión 6, es el error 500 cuando montamos nuestro proyecto en Ubuntu.
En mi caso, para demostrar que realmente no funciona con las versiones de laravel 5.8 y la 6, me dirigí a la siguiente ruta en el terminal:
/var/www/html/laravel/
y creé una capeta llamada laravelprueba con el siguiente comando:
mkdir laravelprueba
accedimos a esa carpeta con:
cd laravelprueba
y descargamos las versiones de laravel 5.8 y la 6.8 (versión actual) con los siguientes comandos:
#laravel 5.8
sudo composer create-project laravel/laravel 58 "5.8.*"
#laravel 6
composer create-project laravel/laravel laravel6
Ejecutamos el primero con sudo para que nos cree una carpeta en la cual deberemos asignar permisos.
Una vez descargados ambos proyectos, nos dirigimos a la página oficial de laravel y vamos a ver los requerimientos:
1) para laravel 6 se necesita PHP >= 7.2.0
2) para laravel 5.8, 5.7 y 5.6 se necesita PHP >= 7.1.3.
3) para laravel 5.5 se necesita PHP >= 7.0.0
Luego que sabemos esto, vamos a ejecutar en el terminal cual es la versión que tengo ejecutando el siguiente comando:
jyc@jyc-Inspiron-5555:~$ php -v
PHP 7.3.12-1+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Nov 28 2019 07:37:16) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.12, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.3.12-1+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
jyc@jyc-Inspiron-5555:~$
Como pueden observar, la versión que tengo en el terminal es la 7.3.12.
Lo que vamos a hacer ahora es ejecutar
sudo nano info.php
para crear un nuevo archivo y en este archivo vamos a poner el siguiente código:
<?php
phpinfo();
?>
Luego vamos a presionar la tecla control + o y enter y luego control + x para salir.
Si accedemos a la url donde está ese archivo observaremos que no es la versión que se necesita:
Como podemos observar, aunque tengamos la última versión de php instalada, la que está configurada es una versión anterior. En mi caso la 7.0.33.
En este sentido, para configurar la versión 7.3 se hace de la siguiente manera:
Primero accedemos a esta ruta: /etc/php y ejecutamos ll para ver todas las versiones de php que tenemos
jyc@jyc-Inspiron-5555:~$ cd /etc/php
jyc@jyc-Inspiron-5555:/etc/php$ ll
total 40
drwxr-xr-x 8 root root 4096 nov 7 22:24 ./
drwxr-xr-x 168 root root 12288 dic 19 07:15 ../
drwxr-xr-x 3 root root 4096 jun 30 22:41 5.6/
drwxr-xr-x 6 root root 4096 mar 22 2017 7.0/
drwxr-xr-x 3 root root 4096 jun 30 22:41 7.1/
drwxr-xr-x 3 root root 4096 jun 30 22:41 7.2/
drwxr-xr-x 5 root root 4096 jun 30 22:41 7.3/
drwxr-xr-x 3 root root 4096 nov 7 22:24 7.4/
jyc@jyc-Inspiron-5555:/etc/php$
Una vez que ya sabemos, pues escribimos en el terminar lo siguiente:
#para activar php7.3
sudo a2enmod php7.3
#para desactivar php7.0
sudo a2dismod php7.0
#para reiniciar apache
sudo systemctl restart apache2
#ejemplo de como debe saber
jyc@jyc-Inspiron-5555:/etc/php$ sudo a2enmod php7.3
Considering dependency mpm_prefork for php7.3:
Considering conflict mpm_event for mpm_prefork:
Considering conflict mpm_worker for mpm_prefork:
Module mpm_prefork already enabled
Considering conflict php5 for php7.3:
Module php7.3 already enabled
jyc@jyc-Inspiron-5555:/etc/php$ sudo a2dismod php7.0
Module php7.0 disabled.
To activate the new configuration, you need to run:
systemctl restart apache2
jyc@jyc-Inspiron-5555:/etc/php$
Si intentamos acceder a laravel 5.8 en la carpeta public observaremos lo siguiente:
Si accedemos a laravel 6 en la carpeta public
En la documentación de laravel no dice esto:
Directory Permissions
After installing Laravel, you may need to configure some permissions. Directories within the storage
and the bootstrap/cache
directories should be writable by your web server or Laravel will not run. If you are using the Homestead virtual machine, these permissions should already be set.
Esto quiere decir que los directorios storage y boostrap/cache deberían de sobreescribirse por el web services.
Una vez que sabemos esto, pues solo hay que ejecutar un solo comando, porque el usuario de apache en ubuntu se llama www-data.
sudo chown www-data:www-data -R carpetalaravel
y con esto ya nuestros proyectos de laravel 5.8 y 6 funcionarán correctamente.
Ahora bien si queremos proteger un poco mas nuestros archivos de laravel, hacemos lo siguiente:
#para cambiar los permisos a todos los archivos y carpetas.
sudo chmod 775 -R carpetalaravel
#para cambiar los permisos a todos los archivos.
sudo find carpetalaravel/ -type f -exec chmod 644 {} \;
y con esto finalizamos.
Dios les bendiga.