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.

Compilar app iOS en un dispositivo sin licencia de Apple

Por fin ha llegado el día en que se puede compilar una aplicación de iOS en un dispositivo sin tener ninguna licencia ni certificados. Algo que para los desarrolladores freelance está genial y llevábamos esperando mucho tiempo, ya que estábamos limitados a compilar siempre en el simulador y sin poder probar muchas funcionalidades en un dispositivo real.

A partir del Xcode 7, ya se puede compilar en un dispositivo sin necesidad de la licencia. Es así de sencillo:

1. Necesitamos un Apple ID, pero como tenemos un dispositivo iOS, seguramente tenemos usuario de Apple y no habrá problema (también se puede crear más adelante).

2. También necesitamos un ordenador Mac con el Xcode 7 o posterior instalado (imprescindible el Xcode 7 o posterior).

3. Abrimos nuestro proyecto de Xcode:

Si seleccionamos el Target de nuestra aplicación, en la parte de Firmar la aplicación, aparece que no tiene puesto ningún certificado para poder firmar la app.

4. Seleccionamos un Team, no tenemos ninguno disponible porque no tenemos licencia. Por lo que pulsamos en Add an Account:

5. Aquí ponemos un Apple ID que tengamos o también podemos crear uno primero:

6. Como se puede ver en la siguiente pantalla, automáticamente se nos crea un certificado para poder firmar la app y por tanto compilar en un dispositivo.

7. Tenemos que cambiar esto también en los Target de la aplicación que son de Test, y seleccionar el Personal Team nuevo que hemos añadido.

8. A continuación, seleccionamos nuestro dispositivo y compilamos (pulsamos el botón Play).

9. Al compilar la primera vez, nos saldrá la alerta que se puede ver en la siguiente imagen, que simplemente nos dice que tenemos que darle a Confiar en ese Apple ID, desde nuestro dispositivo:

10. En nuestro dispositivo, vamos a Ajustes –> General y pulsamos donde pone Gestión de dispositivos:

11. Después pulsamos en nuestro Apple ID que aparecerá como se muestra en la siguiente pantalla:

12. Aparecerá la siguiente pantalla, pulsamos sobre Confiar en «nuestro Apple ID»

13. Nos sale la siguiente alerta para confirmar:

14. Y ya tendríamos la aplicación en nuestro dispositivo lista para ser probada!

Una vez tengamos ya agregado un Personal Team, entonces directamente desde que se crea el proyecto, se puede seleccionar el Personal Team creado anteriormente, y ya estaría todo configurado en el proyecto para compilar.

1. Creamos un proyecto nuevo y en Team, seleccionamos el Personal Team creado anteriormente con nuestro Apple ID.

2. Como podemos ver en los diferentes Targets, ya aparece seleccionado el certificado de la cuenta del Apple ID de nuestro Personal Team.

3. Por lo que no tenemos que modificar nada y ya podemos compilar en nuestro dispositivo sin  ningún problema.

 

Windows 7 se queda obsoleto

O esa parece la noticia de estos últimos días: «Microsoft aconseja cambiar a Windows 10 porque Windows 7 es peligroso».

¿Qué significa esto? Pues simplemente lo que pasó hace unos años con Windows XP, que la arquitectura de Windows 7 se empieza a quedar obsoleta y avisan con tiempo para «mudarnos» a Windows 10 lo antes posible.

Sobre todo el consejo va dirigido a empresas, para que tengan tiempo de migrar sus equipos y sobre todo avisarles de que si siguen usando Windows 7, se verán expuestos a grandes peligros. Pero los usuarios particulares también deberían tenerlo en cuenta.

Así que no os asustéis y vayáis corriendo a vuestro ordenador a formatearlo o actualizarlo a Windows 10, aún queda tiempo: Microsoft ha dado de fecha límite Enero del 2020.

¡Esperemos que ese día todo el mundo tenga ya su ordenador actualizado!

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.

Pasos para conseguir el UDID de un dispositivo iOS

El UDID es un identificador alfanumérico único de los dispositivos de Apple. A diferencia de Android, la política de Apple no permite generar una versión de pruebas de iOS para todo el mundo, sino que es necesario saber el UDID del dispositivo de la persona que va a probar la aplicación, para poder compilar una versión para ese dispositivo.

Los UDID están formados por 40 caracteres alfanuméricos.

Hay varias opciones para ver el UDID de un dispositivo iOS.

La primera opción, necesitaremos tener instalado iTunes en el ordenador.

Primero, abres iTunes y conectas tu dispositivo al ordenador:

itunesUDID1

Después pulsas sobre tu dispositivo que aparecerá en iTunes. Normalmente lo seleccionas en la columna de la izquierda y pulsas en el icono del teléfono en la parte superior izquierda. Esto depende de la versión de iTunes que tengas instalada:

itunesUDID2

A continuación, hay que pulsar en el apartado Resumen de la columna de la izquierda, donde aparecen los datos de tu dispositivo: como la capacidad, la versión de iOS, etc, como se muestra en la siguiente pantalla:

itunesUDID3

Pulsas sobre Número de serie y aparecerá el UDID:

itunesUDID4

Por último, pulsas encima del UDID con el botón derecho del ratón y seleccionas Copiar, de esta manera ya tendrás el UDID de tu dispositivo en el portapapeles y lo podrás pegar donde quieras.

itunesUDID5

La segunda opción para conseguir el UDID de un dispositivo iOS, es a través de un link:

El que he usado habitualmente es el siguiente link http://get.udid.io/. Tienes que abrir este link desde el navegador del dispositivo donde quieres probar la app y después seguir las siguientes instrucciones:

Abrir el link en tu dispositivo y pulsar en el botón verde llamado “Tap to find UDID”:

linkUDID1

Después aparecerá la siguiente pantalla. Pulsa en el botón “Instalar” de la parte superior derecha:

linkUDID2

Finalmente, aparecerá la siguiente pantalla con el UDID. Pulsa en el botón “Send UDID vía E-mail”, para enviar el UDID por email:

linkUDID3

Por último, seguro que encuentras en el App Store, muchas aplicaciones que dicen conseguir el UDID de tu dispositivo. No he encontrado ninguna ahora mismo que de verdad te de el UDID real de tu dispositivo y además que dudo mucho que esto exista. A nivel de programación a partir de iOS 5, quitaron una propiedad de la clase UIDevice llamada uniqueIdentifier, que te daba el UDID de tu dispositivo. Para las actuales versiones de iOS, esa propiedad desapareció y ya no hay forma de hacer esto por programación, por lo cuál, creo imposible que cualquiera de las aplicaciones que te prometen dar el UDID funcionen de verdad.

Otras consideraciones si te descargas una aplicación de las que te dicen dar el UDID de tu dispositivo, si te sale un UDID que empiece por unas cuantas ffffffff, del estilo de ffffffff5DuWsq9p6McveUjfa5iwIPnaM, SOSPECHA DE ELLO, porque no es un UDID real.

Lo mejor es sacar el UDID conectando el dispositivo al ordenador a través de iTunes o con el link que he puesto anteriormente y que funciona bastante bien.