Drupal: Error 403 Forbidden cuando se instala un módulo

Al querer instalar o actualizar un módulo en Drupal 8 despues de ingresar la información del FTP aparece el error:

403 Forbidden
nginx/1.10.0 (Ubuntu)

El problema es que la URL no existe, si nos fijamos en la barra de direcciones veremos algo así:
http://sitio.com/core/authorize.php/core/authorize.php?batch=1&id=17&op=start

Si observan core/authorize.php se repite 2 veces, la solución es crear un Rewrite en la configuración de nuestro servidor web, en este caso estoy utilizando Nginx.

Editamos el archivo /etc/nginx/sites-enabled/default (o el de su sitio) y agregamos la siguiente línea

rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;

En mi caso quedo así (es una parte de la configuración):

server {
server_name example.com;
root /var/www/drupal;

client_max_body_size 20M;

location = /favicon.ico {
log_not_found off;
access_log off;
}

location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}

# Very rarely should these ever be accessed outside of your lan
location ~* \.(txt|log)$ {
allow 192.168.0.0/16;
deny all;
}

location ~ \..*/.*\.php$ {
return 403;
}

rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;

location ~ ^/sites/.*/private/ {
return 403;
}

# Allow “Well-Known URIs” as per RFC 5785
location ~* ^/.well-known/ {
allow all;
}

Reiniciamos el servidor web y listo:

/etc/init.d/nginx restart

Error 500 con Nginx+Chroot+PHP5-FPM+PhpMyadmin

Despues de hacer la instalación de Nginx y PHP5-FPM con Chroot (Jail) e instalar MySQL PhpMyAdmin la página me daba un error 500.

Investigando veo que el problema esta en la siguiente línea del archivo library/common.inc.php de PhpMyAdmin.

date_default_timezone_set(@date_default_timezone_get());

El problema está en que la función date_default_timezone_get() y todo se debe a que no se tienen los archivos necesarios para buscar la timezone del servidor, como lo muestra el log de nginx

[error] 12058#0: *13 FastCGI sent in stderr: “PHP message: PHP Fatal error: date_default_timezone_get(): Timezone database is corrupt – this should *never* happen! in /var/www/phpmyadmin/libraries/common.inc.php on line 276” while reading response header from upstream, client: 111.111.111.111, server: miservidor.com, request: “GET /phpmyadmin/ HTTP/1.1”, upstream: “fastcgi://127.0.0.1:9000”, host: “miservidor.com”

La solución es instalar la timezonedb con PHP-PEAR ( pecl ), procedemos con el siguiente código:

apt-get install php-pear php5-dev
pecl install timezonedb
echo ‘extension=timezonedb.so’> /etc/php5/mods-available/timezonedb.ini
ln -sf /etc/php5/mods-available/timezonedb.ini /etc/php5/fpm/conf.d/30-timezonedb.ini
service php5-fpm restart

Y listo!!.. ya debe de funcionar correctamente la página de PhpMyAdmin

nginx – error 413 Request Entity Too Large

Hoy por la mañana queria subir un archivo CSV al servidor pero lo hago mediante 2 pasos, primero cargo el archivo y muestro un formulario con los resultados para confirmar que la información sea correcta, despues ese formulario lo mando mediante POST y al darle enviar me aparece el siguiente error en el servidor web Nginx

Error 413 Request Entity Too Large

La solución a todo esto es aumentar el tamaño en Megas que puede recibir el servidor., solo es cosa de modificar el archivo /etc/nginx/nginx.conf o si tiene subdominios la carpeta correspondiente al subdominio que estara dentro de /etc/nginx/sites-available/default (por ejemplo)

Bueno ahí dentro del archivo de configuración buscamos el bloque server e insertamos adentro la etiqueta: client_max_body_size 50M; (en donde 50M es el tamaño deseado), nos quedaría algo así:

server {

listen 80; ## listen for ipv4
listen [::]:80 default ipv6only=on; ## listen for ipv6

server_name paginaweb.com www.paginaweb.com;
client_max_body_size 50M;
access_log /var/log/nginx/paginaweb.access.log;

location / {
root /var/www/paginaweb.com;
index index.php;
if (-e $request_filename) {
break;
}
rewrite ^/(.+)$ /index.php?/$1 last;
}
}

Y listo, reiniciamos el servidor web.

Ushahidi en Nginx con url amigables

Para instalar Ushahidi en un servidor Nginx se requiere algo de configuración especial para que funcione al 100%., para eso creamos un sitio en /etc/nginx/sites-enabled lo llamaremos ushahidi en donde pondremos algo así:

server {
listen 80;
server_name ushahidi.oviedo.mx;
root /var/www/ushahidi;
index index.php;

# ROUTING TO USHAHIDI IF REQUIRED
location / {
try_files $uri $uri/ @ushahidi;
rewrite ^/(.*)$ /index.php/$1 break;
}

# BLOCKS ACCESS TO . FILES (.svn, .htaccess, …)
location ~ /\. {
deny all;
}

# FOR PHP FILES
location ~* \.php$ {
# PHP FILES MIGHT BE TO HANDLED BY USHAHIDI
try_files $uri $uri/ @ushahidi;

include fastcgi_params;
fastcgi_pass unix:/tmp/php.socket;
}

# HANDLES THE REWRITTEN URLS TO USHAHIDI CONTROLLER
location @ushahidi
{
include fastcgi_params;
fastcgi_pass unix:/tmp/php.socket;
}

# CACHE CONTROL FOR STATIC FILES
location ~* \.css|\.js|\.jpg|\.jpeg|\.png|\.gif|\.swf|\.svg|\.tiff|\.pdf$ {
expires 30d;
}
}

En negrita lo que deben de cambiar con la info de su servidor, igual puede que tengan algo diferente pero pues ya es una idea, como ushahidi esta basado en Kohana pues de ahi me vole las reglas y las adapte a mis necesidades

No olviden en la configuración del ushahidi application/config/config.php cambiar la linea donde dice: $config[‘index_page’] = ‘index.php’; por

$config[‘index_page’] = ”;

Para que funcionen bien las páginas.