Archivo de la etiqueta: php

Como añadir una nueva entrada a un fichero po y mo

Si utilizas la aplicación Poedit para editar tus traducciones de WordPress te habrás fijado que no existe ningún botón ni ninguna opción para añadir una nueva fila o traducción al fichero.

Para poder añadir una nueva entrada a un fichero po y mo tan solo debes olvidarte al principio de Poedit y editarlo con un procesador de textos cualquiera (por ejemplo notepad++) y copiar una fila como la siguiente.

#: ../header.php:391 ../header.php:442
msgid «Just type and press ‘enter'»
msgstr «Teclea y pulsa intro»

La primera fila es un comentario que indica en que sitios se está utilizando la traducción.

La segunda fila (la que empieza por msgid) significa que el id del mensaje es lo que va entre comillas. Lo ideal es que para todos tus ficheros de idiomas existan los mismos ids. Es común sobretodo cuando descargas plantillas que se hayan olvidado en los ficheros de traducción algunas claves con lo que la traducción no se realizará. En este caso obtendrá el valor por defecto que contiene el fichero de idioma por defecto.

La tercera fila (comienza por msgstr) es el sitio donde se realiza la traducción en el idioma que pertenezca el fichero a editar.

Una vez hemos introducido estas 3 filas con su correspondiente traducción al idioma y guardado el archivo po podremos abrir este mismo archivo con Poedit. Ahora podremos ver que con esta app se visualiza la nueva entrada que anteriormente no estaba.

El último paso es guardar con Poedit y se generará o actualizará el fichero mo.

Estos dos últimos ficheros (po y mo) son los que utilizaremos para su correcta traducción.

Conocer ruta logs y tmp del servidor en producción

Si el desarrollo de tu sitio web joomla! lo has realizado en tu equipo local puede ser que en el momento de subirlo a producción tus rutas hacia las carpetas logs y tmp no sean las correctas.

Para averiguar la nueva ruta física completa donde se encuentran dichos directorios puedes crearte un nuevo fichero php como por ejemplo ruta.php con el siguiente código:

<?php echo __FILE__; ?>

Este fichero le colocarás por ejemplo en la raíz de tu directorio html de tu servidor hosting mediante ftp y posteriormente accederás a la ruta del tipo:

www.nombredetudominio.es/ruta.php

En la pantalla del navegador podrás visualizar la ruta física que utilizarás para configurar las rutas hacia las carpetas logs y tmp editable desde la opción de menú configuración global o directamente sobre el archivo configuration.php de tu sitio joomla!

En la comprobación que permite joomla! se establecen entre otras cosas la ruta logs y tmp del servidor marcando como erróneo cuando estas no tienen los permisos suficientes.

Manejo y registro de errores php en tiempo de ejecución

Es posible que al ejecutar un sitio web php con apache aparezcan en pantalla errores de tipo notice, warning, error…

El modo en que se muestran o advierten al usuario es lógicamente administrable a través de sus ficheros de configuración.

Antes de nada hay que aclarar que php ofrece distintos niveles de manejo de errores y logging.

Las constantes de nivel de errores

Los niveles de error en php son:

  • E_ALL: todos lo errores y advertencia.
  • E_ERROR: errores fatales en tiempo de ejecución.
  • E_RECOVERABLE_ERROR:  errores en tiempo de ejecución capturable. Si no se captura pasa a ser de tipo E_ERROR.
  • E_WARNING: advertencias en tiempo de ejecución. (no son errores fatales).
  • E_PARSE: errores en tiempo de compilación.
  • E_NOTICE: avisos en tiempo de ejecución (son advertencias que suelen derivar de bugs en el código, pero que son posiblemente intencionados).
  • E_STRICT: avisos en tiempo de ejecución para que php sugiera cambios en el código para asegurar compatibilidad con dicho código
  • E_CORE_ERROR: errores fatales que ocurren durante la inicialización de php.
  • E_CORE_WARNING: advertencias que ocurren durante el arranque de php.
  • E_COMPILE_ERROR: errores fatales en tiempo de compilación.
  • E_COMPILE_WARNING: advertencias en tiempo de compilación.
  • E_USER_ERROR: mensajes de error generados por el usuario mediante el código.
  • E_USER_WARNING: mensajes de advertencia creados por el usuario.
  • E_USER_NOTICE: mensajes de aviso creados por el usuario por código.
  • E_DEPRECATED: aviso sobre una parte de código que no será funcional en versiones futuras de php.
  • E_USER_DEPRECATED: aviso generado por el usuario que no será funcional en posteriores versiones de php.

Estos errores se mostrarán o no dependiendo de la configuración de php.ini. Este fichero se encuentra en la instalación típica de php dentro de Apache.

Los parámetros más importantes que se utilizan para configurar el manejo de errores  y logs son:

  • error_reporting
  • display_errors

Con error_reporting podemos establecer qué nivel o niveles de errores se mostrarán de todos los que hemos expuesto anteriormente.

Los valores más comunes para la configuración de este parámetro son:

  • Valor por defecto en la mayor parte de instalaciones:
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT & ~E_NOTICE
  • Valor idóneo para etapas de desarrollo:
error_reporting=E_ALL
  • Valor sugerido para producción:
error_reporting=E_ALL & ~E_DEPRECATED & ~E_STRICT

Con la directiva display_errors podemos decidir si queremos que los errores se muestren en las páginas (en forma de html) a la hora de visualizar el resultado de nuestro código php. Esto puede ser muy útil cuando se trabaja en local o en proyectos que aún no están subidos a producción pero es totalmente indeseable cuando la web está desplegada en producción. Elegir una de las dos:

display_errors=On; Esta configuración mejor en desarrollo
display_errors=Off ; Esta configuración en producción

cannot modify header information

Si se produce el siguiente error en PHP:
PHP Warning: Cannot modify header information – headers already sent by

Asegurate de que el fichero que te está produciendo el error no está enviando código html al servidor. Esto quiere decir que hay que tener mucho cuidado con todo, no solo los echo sino también espacios en blanco que el intérprete php pueda considerar código html.

Este error se suele producirse con relativa asiduidad cuando desde el código hacemos un


...

<html>
<?php
/* Esto producirá un error. Fíjese en el html
* que se muestra antes que la llamada a header() */
header('Location: http://www.example.com/');
exit;
?>

...

Cambiar el tamaño máximo para subir ficheros en php

Existe un tamaño máximo para subir ficheros en php. Este viene establecido en el fichero de configuración php.ini dentro de nuestro servidor.

Para aumentar o disminuir dicho valor deberemos editar este fichero de configuración e ir al valor upload_max_filesize.


upload_max_filesize=6M

En el ejemplo anterior el tamaño máximo es de 6 Megas, bastaría con cambiar este valor al  tamaño deseado. Eso sí es necesario reiniciar Apache para que los cambios surtan efecto.

En muchos cms como WordPress, Joomla, Prestashop o Drupal se da mucho un error al intentar subir plantillas, plugins, módulos… en muchas ocasiones esto está relacionado con el tamaño máximo permitido para subir un fichero. Este error se soluciona cambiando los valores de configuración de php.ini como anteriormente hemos descrito.

Mover WordPress a otro dominio

Si tienes que mover WordPress a otro dominio supone mucho más que mover los ficheros y la base de datos, desde luego esto último es imprescindible, pero hay que tomar acciones adicionales para borrar/modificar antiguas referencias al antiguo nombre de dominio o localización que se haya mantenido dentro de la base de datos.

Según la ayuda de WordPress tenemos dos opciones:

  • Realizar una búsqueda y reemplazo únicamente en la tabla wp_posts.
  • Usar una herramienta que realiza cambios en la base de datos de una manera segura. La herramienta en cuestión es: Database Search And Replace Script in PHP

Yo he podido probar la segunda opción y te diría que es la mejor porque dudo que en todos los casos valga únicamente con reemplazar en la tabla wp_posts.

Obtener la url raíz en WordPress

A veces es necesario que el servidor calcule la url raíz donde está ubicado nuestro sitio WordPress.

Pongamos el siguiente ejemplo, tenemos en html lo siguiente:

<img src="./wp-content/themes/template/assets/img/ICON-twitter.png"  id="twitter"/>

Si este código html está dentro de un archivo que se utiliza en muchas partes de la web (mediante include o require) es posible que  la imagen no llegue a mostrarse.

Si pasa esto podemos asegurarnos de que el servidor se irá al directorio correcto poniendo la ruta absoluta mediante la variable $baseUrl.

<img src="<?php echo $baseUrl?>/wp-content/themes/template/assets/img/ICON-twitter.png"  id="twitter"/>

Con el anterior código nos aseguramos que irá a la ruta correcta a buscar nuestra imagen ya que $baseUrl contiene la url raíz en WordPress correcta donde está instalado.

Últimas tecnologías Web

Muchas tecnologías avanzan vertiginosamente hacia un futuro que seguramente no podamos ni imaginar. Este mismo futuro no nos permite ni un solo descanso y nos obliga a seguir aprendiendo. En el área del desarrollo y programación web pasa lo mismo.

Cada cierto tiempo los lenguajes de programación como ASP.Net, PHP, silverlight, etc. realizan cambios y mejoras en su framework aumentando, refinando y adaptando su funcionalidad y, al mismo tiempo, dejando poco a poco obsoletas versiones anteriores.

Por eso es recomendable utilizar las últimas tecnologías al servicio de los clientes. Tecnologías Web:

  • Web 2.0 – jQuery, XHTML, HTML5, AJAX
  • PHP 5.x
  • .Net 4.0 y .Net 4.5 – ASP.Net, Silverlight, Web Services, WCF, Entity Framework
  • CMS – Joomla! 2.5, joomla! 3.0, Drupal 7, WordPress 3.x
  • Datos y SGDB – SqlServer, Oracle, MySql, Pervasive, ODBC, XML, csv…
  • Servidores Web – IIS 6, IIS 7 y Apache.

Si lo prefiere para posibles mantenimientos de antiguos sitios web también tengo amplia experiencia en las versiones anteriores de PHP, ASP Clásico, ASP.Net (1.0, 2.0, 3.0 y 3.5) y joomla 1.6

Configuración de idiomas en mantis

Pasos para configurar los idiomas en mantis:

1 – Editar archivo config_inc.php con un editor de texto, por ejemplo notepad.

2 – Establecer el array de idiomas disponibles estableciendo/modificando la siguiente línea:

$g_language_choices_arr = array( 'english', 'spanish' );

3 – Establecer idioma por defecto de la aplicación:

$g_default_language = 'spanish';

Con este ejemplo tendrás configurado mantis con idioma español por defecto (para la pantalla de login) y, así mismo, podrás disponer de los idiomas inglés y castellano para configurar el idioma por usuario.

Dentro del panel de administración también puedes seleccionar el idioma con el que trabajará cada usuario. Para ello debes ir a Administración->Administrar Usuarios. Una vez selecciones el usuario te aparecerán las opciones de configuración de idiomas en la parte inferior de la pantalla:

mantis-idiomas-usuario

 

Depuración php con NetBeans

Este post intentará explicar de una manera sencilla cómo conseguir la depuración php con NetBeans en Windows.

Antes de nada me gustaría decir que he intentado depurar php en Eclispse y no lo he conseguido. Tras treinta minutos de desesperación y leyendo por ahí temas en foros he descubierto que la mejor herramienta para trabajar en php es netbeans y no perderse entre las múltiples variaciones y versiones que ofrece Eclipse. No digo que en Eclipse no se pueda pero creo que si tienes un proyecto php es mejor utilizar NetBeans.

  1. Instalar NetBeans. Para empezar lo primero que debes hacer es bajarte, si no la tienes ya, la última versión de NetBeans. En este ejemplo me bajé la versión NetBeans IDE 7.4 optimizada para php en la página oficial de NetBeans.
  2. Configurar NetBeans. Una vez instalado debemos ir a Tools->Options. En la ventana seleccionaremos PHP y la pestaña General. Si no tenemos seleccionado el intérprete deberemos buscarlo. Se trata del ejecutable php.exe. La ubicación de este archivo depende de donde hiciste la instalación. En mi caso al instalar xampp estaba dentro de la raíz de xampp en la carpeta php.NetBeans-PHP-Depuracion
  3. Editar el fichero php.ini. En la misma carpeta encontrarás el fichero php.ini. Haz una búsqueda dentro del archivo de xdebug y verás que se encuentran comentadas algunas líneas dentro de esa sección. Hay que descomentar las siguientes:

zend_extension_ts=»C:/xampp/php/php_xdebug.dll»

xdebug.remote_enable=1

Nota: debes de tener el archivo php_xdebug.dll que es la librería que php usa para la depuración. Si no es así puedes bajartela aquí.

Una vez realizado todo esto ya tienes el entorno para poder depurar preparado.

depuracion-php-netbeans