Archivo

Error 500 Internal Server Error en WordPress

Cuando navegas por las distintas secciones de una web realizada en WordPress, sale un mensaje que dice 500 Internal Server Error, ¿cómo soluciono esto?

Este error suele ocurrir mucho cuando intentas hacer login en la página de administración de WordPress, pero también al navegar entre distintas páginas de la web. Es posible que se haya des-estructurado algo de manera interna en WordPress, justo después de instalar un plugin o al hacer alguna modificación.

Primera solución: Archivo .htaccess y enlaces permalinks.

  1. Nos conectamos por FTP al servidor donde tenemos la alojada la web en WordPress.
  2. Renombramos el archivo .htaccess como .htaccess_old.
  3. Después, vamos a la página de administración del WordPress.
  4. En el apartado Ajustes, ir a Enlaces permanentes y sin modificar nada, pulsar de nuevo en Guardar cambios, volverá a crearse la estructura de carpetas y un archivo .htaccess nuevo.

En el caso de que el archivo htaccess estuviese corrupto, arreglaría el problema.

Segunda solución: Desactivar todos los plugins.

En este caso, es posible que al instalar algún plugin nuevo, algo haya fallado en la instalación o el plugin no sea compatible con la versión instalada del WordPress. Como normalmente pasa esto cuando estamos instalando muchos plugins a la vez, pues es complicado saber que plugin es el que está dando problemas.

Una opción es desactivar todos e ir activando uno por uno, en el caso de que se active uno y vuelva a producirse el error, entonces tendremos que eliminar ese plugin que está dando problemas.

Otra opción que hace lo mismo pero de una manera más ruda es:

  1. Conectamos por FTP al servidor donde tenemos alojada la web en WordPress.
  2. Vamos a wp-content y después entramos en la carpeta plugins.
  3. Hacemos un backup de todos nuestros plugins.
  4. Borramos los plugins de la carpeta y comprobamos si WordPress funciona correctamente y ya no sale el error.
  5. Si WordPress funciona, entonces es que había un problema con algún plugin, por lo que vamos copiando la carpeta de cada plugin y cada vez que terminemos de copiar, comprobamos si WordPress sigue funcionando o sigue saliendo el error.
  6. Con esto descartamos los plugins que no dan problemas y averiguamos cuál es el plugin que hemos instalado y que está fallando.

 

Por último, si todavía sale el error 500 Internal Server, se puede tratar de un error relacionado con el proveedor de hosting, así que habría que ponerse en contacto con el equipo de soporte de nuestro proveedor del hosting y ver como solventar el problema.

Problema al leer archivo JSON desde PHP

Un problema muy común a la hora de trabajar con archivos JSON en PHP es que a veces, suelen surgir problemas a la hora de leer el archivo.

Inicialmente, abrimos un archivo JSON con la función file_get_contents(), y guardamos el contenido (que es un String) en una variable. Después para transformar el String en un objeto JSON, para que podamos recorrerlo y trabajar con él, pasamos una función llamada json_decode(), que nos devuelve un array de la estructura del JSON. Y ya con ese array podemos trabajar mejor, para buscar un valor por una clave, o para recorrer el JSON imprimiendo el contenido de forma ordenada.

Esto sería el código de ejemplo del PHP readJSON.php, que se encargaría de leer el archivo JSON e imprimirlo por pantalla:

$jsonfile = file_get_contents(ejemplo.json);
$arrayjson = json_decode($jsonfile, true);
print_r($arrayjson);

Sobre el código anterior, en la variable $jsonfile se guarda correctamente el string del JSON que se recoge del archivo con la función file_get_contents(). Si lo imprimes por pantalla aparece bien. Pero al pasar la función json_decode(), devuelve un array vacío (NULL), pero no da ningún error al ejecutarlo en el navegador que esté relacionado con esto.  El problema, es que el archivo ejemplo.json no está codificado a UTF-8 y por tanto, la función json_decode() no puede transformar el String $jsonfile a una estructura JSON legible.

Una posible solución es coger el archivo ejemplo.json, abrirlo con un editor como Sublime Text o Notepad++ y en las opciones de codificado, cambiar su codificación a UTF-8 y guardar.

Pero una solución más rápida y que nos asegura que siempre que se transforme el JSON el string va a estar codificado a UTF-8, es la siguiente: después de leer el archivo ejemplo.json, codificarlo a UTF-8 por código y finalmente pasárselo al json_decode() ya codificado a UTF-8.

Quedaría de la siguiente forma:

$jsonfile = file_get_contents(ejemplo.json);
$jsonencode = utf8_encode($jsonfile);
$arrayjson = json_decode($jsonencode, true);
print_r($arrayjson);

Si el problema es que ni siquiera funciona el leer el archivo ejemplo.json con la función file_get_contents, mirar aquí.

 

Problema al firmar app: Este certificado proviene de un emisor no válido

Cuando vas a firmar con un certificado en Xcode y no te deja, te echas las manos a la cabeza ya que en el mundo Apple + firmas siempre es un poco infierno averiguar de donde viene el problema.

Lo normal es ver si te sale algún error del cual puedas identificar el problema, y si aún así no lo sacas, lo siguiente es mirar como loco por todos lados.

Lo mejor es mirar directamente en la aplicación Llavero (Keychain) del ordenador, ya que todo lo relacionado con firmas, certificados y demás, está reflejado en esa aplicación.

El problema es cuando entras en el llavero y ves que en la descripción del certificado que te da problemas para firmar el proyecto de Xcode, aparece lo siguiente: This certificate has an invalid issuer

Esto que significa, que el certificado procede de un emisor no válido. Esto ocurre porque el Apple Worldwide Developer Relations Certification Authority ha expirado.

ThisCertificatehasAnInvalidIssuer

Para solucionar este problema:

1. En la aplicación Llavero, pulsar en Visualización (View) y pulsar en «Mostrar los certificados expirados» («Show Expired Certificates»).

AppleWorldwideDeveloperRelationsCertificationAuthority

2. Mirar que tengamos seleccionado la categoría «Certificados» («Certificates») en la columna de la izquierda.

3. Eliminamos el Apple Worldwide Developer Relations Certification Authority que ha expirado.

AppleWorldwideDeveloperRelationsCertificationAuthority2

4. Descargamos el nuevo certificado del Apple Worldwide Developer Relations Certification Authority de este link https://developer.apple.com/certificationauthority/AppleWWDRCA.cer y pulsamos doble click sobre el certificado para instalarlo.

5. Se instalará directamente en el Llavero y ya podremos firmar y compilar la aplicación.

Problema al generar un Archive desde Xcode que contiene la librería de Vuforia

En un proyecto de Xcode que contiene la librería de Vuforia y que se ha generado a través de Unity3d, cuando se va a generar un Archive, ya sea un AdHoc o para subirlo a la App Store, da un fallo del Codesign, es decir, da un fallo al firmar y no deja generar ningún ipa.

La solución a esto es eliminar el bundle de QCar, que añade automáticamente Unity3d al compilar la app. También se puede eliminar el QCar del proyecto de Unity3d.

Índices de un array mal generados al codificar con json_encode en PHP

Algunas veces, cuando queremos transformar un array a una estructura JSON usando la función json_encode de PHP, sucede que se genera mal la estructura del JSON. A los primeros elementos del JSON, le pone de clave los índices del array en String. Esas claves no se añaden por código, si no que lo hace sólo el json_encode.

Este problema ocurre porque los índices del array que se va a codificar a JSON, no son correlativos o no empiezan por cero.

Cuando se codifica un array, si las claves no están en una secuencia numérica continua comenzando por 0, todas las claves son codificadas como cadenas, y especificadas para cada pareja clave-valor.

La solución es poner los índices del array a convertir a JSON, de forma numérica y secuencial.

Error 404 al leer archivo JSON desde navegador o js

Os ha ocurrido alguna vez que al leer un archivo JSON desde un navegador o desde un Javascript, aparece el error 404 como que ese archivo no se encuentra en el servidor, pero en realidad si que está alojado en el servidor.

Pues este error ocurre mucho en los servidores Windows, porque el servidor de Windows no tiene habilitada la extensión JSON en la configuración MIME Types y por lo cuál, no puede abrir un archivo con extensión .json. Tan sólo hay que habilitarla y ya funcionaría.

Para habilitar la extensión JSON en la configuración MIME Types de un servidor Windows, hay que realizar lo siguiente:

1. Abrir IIS Manager, y con el botón derecho abrir las propiedades del IIS Server.
2. Añadir la extensión ‘json’ MIME Type:

2.1. Hacemos doble click sobre el icono «MIME Types».
2.2. Después pulsar  en «Add MIME Type» (debajo de la sección Acciones del lado derecho)
2.3. En la ventana «Add MIME Type» añadir:

File name extension: .json
MIME type: application/x-javascript

2.4. Pulsar en OK, y deberías ver el MIME Type .json añadido en la lista de MIME Types.

3.  Añadir el Script Map Handelr para el MIME Type «json»:

3.1. Hacemos doble click en el icono de «Handler Mappings»
3.2. Pulsar en «Add Script Map…»  (debajo de la sección Acciones del lado derecho)
3.3. En la ventana «Add Script Map» añadir:

Request path: *.json
Executable: C:\Windows\System32\inetsrv\asp.dll
Name: JSON

3.4. Pulsar en OK ( Aparecerá una ventana de alerta con el mensaje: Do you want to allow this ISAPI extension?…etc ) Pulsa en Yes. Deberías ver la extensión .json añadida a la lista de Handler Mappings.

Otra posible solución, un poco más «apaño», es que cómo desde un Javascript o desde el mismo navegador no se puede acceder al JSON, pero desde PHP si (lo podemos comprobar ejecutando la función phpinfo() para saber si PHP lo tiene habilitado), lo que se puede hacer es crear un PHP que sea el que lea el JSON y lo devuelva como cadena de texto. Después desde el Javascript donde no podemos leer directamente el JSON, lo que hacemos es llamar al PHP que hemos creado, y metemos el resultado en una variable. Ahora sí que podemos leer el JSON desde Javascript.

Opción 1. Esto sería un ejemplo del código que se usa para leer el JSON desde Javascript directamente (necesitaremos habilitar la extension en el servidor):

$.getJSON(‘ejemplo.json’, function(contentFile){
//lo que queramos hacer con el JSON
});

Opción 2. Si no conseguimos habilitar la extensión JSON en el servidor y por lo cuál al ejecutar el código de la opción1 nos da el error 404, la opción 2 es hacerlo pero a través de un PHP.

Esto sería el código de ejemplo del PHP getJSON.php, que se encargaría de leer el archivo JSON e imprimirlo:

$jsonfile = file_get_contents(ejemplo.json);
$arrayjson = json_decode($jsonfile, true);
print_r($arrayjson);

Código de ejemplo del Javascript que lee el JSON a través de un PHP:

var jsonFile = «getJSON.php»; //el php que nos devuelve el contenido del JSON en formato texto

$.getJSON( jsonFile, {
format: «json»
}).done(function( contentFile ) {
//lo que queramos hacer con el JSON
});

Esta última opción sólo la usaría en el caso crítico de que no consiga habilitar la extensión JSON en el servidor Windows, ya que es posible que no tengamos acceso a la configuración del servidor y necesitemos una solución rápida, pero no es lo más recomendado.

No deja conectar en modo pasivo en Filezilla Manager

Un uso típico cuando queremos conectar con un servidor a través de FTP usando el programa Filezilla Manager, es que por el tipo de servidor que es, necesitamos conectar en Modo Pasivo.

El problema es que a veces, cuando ponemos la conexión en Modo Pasivo, no deja conectar con el servidor.

La solución es comprobar que la red del ordenador, esté puesta en Red Trabajo o Red Privada y con eso ya tendría que dejar conectar.