Error actualización, paquete de actualización de idioma, permisos de directorios y +FollowSymLinks
Joomla, para qué lo vamos a negar, es un CMS muy caprichoso (WordPress también tiene sus rarezas y grandes). Es posible que al lanzar una actualización de Joomla os halláis encontrado con la página de administración en blanco. A mí me ha pasado con una prueba de un nuevo template que estoy diseñando para esta página con un Quickstart de SmartAddons.Com (el template gratuito se llama SJ Plus y lo podéis descargar desde el enlace anterior). En otras páginas, como esta que está en producción, la actualización se ha realizado sin problemas.
Para evitarnos tener que volver a instalar de nuevo todo el site, y no digamos si está en producción que sería más grave, mi primer consejo antes de lanzar la actualización es hacer un respaldo de la base de datos. Y esto debería tomarse como norma antes de cada actualización.
Una vez hecha la copia de seguridad de la base de datos, lanzaremos la actualización desde el panel de administración de Joomla y si da error como en el caso que estoy explicando, lo que haremos será vaciar todas las tablas de la base de datos desde nuestro PhpMyAdmin e importar el respaldo que tenemos muy bien guardado.
Hemos vuelto a lo antiguo pero... los archivos y carpetas de la nueva versión de Joomla si que se han actualizado en el servidor. Entonces iremos a la administración y desde "Extensiones -> Gestor de extensiones --> Bases de datos" (donde nos deberían salir varios errores):
Pinchamos en "Corregir". Una vez hecho la pantalla debería quedar como la siguiente con nuestro Joomla actualizado a la última versión:
Instalar manualmente la última versión de Joomla en español
Otro de los errores que me ha dado este paquete de SJ Plus ha sido al intentar instalar el idioma español, a pesar de que en la base de datos existen las tablas de idiomas que pueden instalarse, entre ellas el nuestro. Para no liarnos demasiado lo mejor es irnos a la fuente del español: http://update.joomla.org/language/details3/es-ES_details.xml , navegar por la página hasta encontrar la última versión, en este caso la 3.1.5v1 y copiaremos la URL del archivo comprimido en .zip: http://joomlacode.org/gf/download/frsrelease/18637/83524/es-ES_joomla_lang_full_3.1.5v1.zip
Desde la administración de Joomla "Extensiones -> Gestor de extensiones --> Instalar" marcaremos la pestaña "Instalar desde una URL" y pegaremos en la caja la que hemos recogido antes:
Damos a "Instalar" y debería aparecernos la información de lo que se ha instalado. Ya podremos cambiar nuestro idioma predeterminado desde "Extensiones -> Gestor de idiomas"
Pantalla en blanco al cambiar a Apache ModRewrite
Algo parecido a lo que pasa con la carpeta /images en el archivo robots.txt por defecto de Joomla que explicaba en este artículo, pasa también con el archivo htaccess.txt que tiene una instrucción que está obsoleta esta:
## Can be commented out if causes errors, see notes above.
Options +FollowSymLinks
Y aunque avisan de que si causa error deberemos comentarla, por defecto viene activada.
+FollowSymLinks es una directiva en la configuración del servidor web Apache que le dice al servidor seguir los así llamados enlaces simbólicos. Aunque tiene importancia para la seguridad, normalmente es en la configuración de Apache donde debe de incluirse (archivo http.conf en el caso de CentOs) con una línea parecida a esta en cada servidor virtual:
Options -Indexes +IncludesNOEXEC +SymLinksifOwnerMatch +ExecCGI
De cualquier modo si queréis una protección contra los enlaces maliciosos podéis usar en lugar de +FollowSymLinks, que recomiendan que no se utilice, esta otra línea:
Options +SymLinksIfOwnerMatch
También es recomendable descomentar la línea
# RewriteBase /
dejándola así:
RewriteBase /
De este modo se nos quitará de las URLS los index.php que aparecen justo detrás del nombre del dominio y en ocasiones antes de las categorías y subcategorías. El archivo .htaccess básico (se pueden hacer muchas cosas con este archivo, redirecciones, bloqueos a spammers, ajustes de lectura de Apache para mejorar la velocidad de carga, etc.) para Joomla quedaría así:
##
# @package Joomla
# @copyright Copyright (C) 2005 - 2013 Open Source Matters. All rights reserved.
# @license GNU General Public License version 2 or later; see LICENSE.txt
##
##
# READ THIS COMPLETELY IF YOU CHOOSE TO USE THIS FILE!
#
# The line just below this section: 'Options +FollowSymLinks' may cause problems
# with some server configurations. It is required for use of mod_rewrite, but may already
# be set by your server administrator in a way that dissallows changing it in
# your .htaccess file. If using it causes your server to error out, comment it out (add # to
# beginning of line), reload your site in your browser and test your sef url's. If they work,
# it has been set by your server administrator and you do not need it set here.
##
## Can be commented out if causes errors, see notes above.
#Options +FollowSymLinks
Options +SymLinksIfOwnerMatch # opcional>
## Mod_rewrite in use.
RewriteEngine On
## Begin - Rewrite rules to block out some common exploits.
# If you experience problems on your site block out the operations listed below
# This attempts to block the most common type of exploit `attempts` to Joomla!
#
# Block out any script trying to base64_encode data within the URL.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Block out any script that includes a <script> tag in URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Block out any script trying to set a PHP GLOBALS variable via URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Block out any script trying to modify a _REQUEST variable via URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Return 403 Forbidden header and show the content of the root homepage
RewriteRule .* index.php [F]
#
## End - Rewrite rules to block out some common exploits.
## Begin - Custom redirects
#
# If you need to redirect some pages, or set a canonical non-www to
# www redirect (or vice versa), place that code here. Ensure those
# redirects use the correct RewriteRule syntax and the [R=301,L] flags.
#
## End - Custom redirects
##
# Uncomment following line if your webserver's URL
# is not directly related to physical file paths.
# Update Your Joomla! Directory (just / for root).
##
RewriteBase /
## Begin - Joomla! core SEF Section.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# If the requested path and file is not /index.php and the request
# has not already been internally rewritten to the index.php script
RewriteCond %{REQUEST_URI} !^/index\.php
# and the request is for something within the component folder,
# or for the site root, or for an extensionless URL, or the
# requested URL ends with one of the listed extensions
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# and the requested path and file doesn't directly match a physical file
RewriteCond %{REQUEST_FILENAME} !-f
# and the requested path and file doesn't directly match a physical folder
RewriteCond %{REQUEST_FILENAME} !-d
# internally rewrite the request to the index.php script
RewriteRule .* index.php [L]
#
## End - Joomla! core SEF Section.
Permisos de directorios en una instalación de Joomla 3.1.x
Aunque yo he realizado instalaciones sin problemas desde Joomla 2.5 con permisos 755 en los directorios casi siempre suelo poner antes de la instalación permisos 777 a los siguientes directorios:
administrator/components
administrator/language
administrator/language/
administrator/language/todos los demas lenguajes que haya
administrator/manifests/libraries
administrator/manifests/packages
administrator/manifests/files
administrator/modules
administrator/templates
components
images
images/
language
language/en-GB
language/es-ES
libraries
media
modules
plugins
plugins/
templates
cache (Cache Directory)
administrator/cache (Cache Directory)
logs (Log directory)
tmp (Temp directory)