Vamos a hacer que el visitante de nuestra página pueda ver su propia IP.
Leer más...Medir tiempo que tarda en ejecutarse un script de PHP
Podemos saber el tiempo exacto que tarda en ejecutarse un script de PHP gracias a la función microtime.
Justo antes del inicio del script añadiremos esta línea:
$start = microtime(true);
Y después del script añadiremos esta otra:
$time_elapsed= microtime(true) - $start;
Así tendremos el tiempo de ejecución del script (en segundos) en la variable $time_elapsed.
Wamp: Quitar estilo a los errores de PHP
Al instalar el servidor WAMP y acceder a una web local, veremos que si tiene errores de código PHP, estos aparecerán en una tabla naranja bastante molesta.
Si queremos volver al clásico formato sin estilo de los errores de PHP podemos hacerlo muy facilmente:
- Hacemos clic en el icono de WAMP de la barra de tareas.
- Seleccionamos PHP, php.ini
- Buscamos la línea html_error = On y la ponemos a Off
- Reiniciamos WAMP
También podemos desactivar el módulo xdebug, que es el que le da formato a los errores, comentando la línea zend_extension que está al final del fichero (si no la encontramos en el php.ini, buscar en phpForApache.ini)
No se ven los menus en la administración de Joomla
Puede ocurrir que al entrar a la administración de Joomla, aparezca vacío el listado de menús, aunque tengas alguno, y si además tienes activada la opción de mostrar errores de PHP, verás mensajes de error similares a estos:
Warning: Parameter 4 to JHTMLMenu::treerecurse() expected to be a reference, value given in libraries/joomla/html/html.php on line 87
Leer más...
Impedir ejecución de código PHP en una carpeta
A veces es necesario conceder todos los permisos a una carpeta para poder subir en ella imágenes o archivos, pero esto es un riesgo ya que un usuario malintencionado pueden acceder a ella y ejecutar codigo malicioso que cause estragos en nuestro servidor web.
Una manera de evitarlo es impedir la ejecución de código PHP en esta carpeta. Para lograrlo solo tenemos que crear un fichero .htaccess en dicha carpeta y poner este codigo en él:
AddHandler cgi-script .php .pl .py .jsp .asp .htm .shtml .sh .cgi .dat
RewriteRule .(gif|jpg|js|css|swf|png)$ - [L]
Este código impide la ejecución de código PHP en la carpeta y en todas sus subcarpetas.
Aplicar cambios de php.ini en PHP como CGI
Si tienes PHP instalado como módulo de Apache y quieres que se apliquen los cambios que hayas hecho en el fichero php.ini, es necesario que reinicies todo el servidor Apache , con este comando:
/etc/init.d/apache restart
Si tienes PHP instalado como CGI, puedes aplicar los cambios hechos en el php.ini sin necesidad de reiniciar todo el servidor con este comando:
for x in `ps x | grep php | grep -v grep | awk '{print $1}'`; do kill -9 $x; done
Así cerraras todos los procesos relacionados con PHP de tu usuario, lo que forzará que el interprete de PHP vuelva a cargarse, teniendo que leer el php.ini con los nuevos cambios.
Solucionar error PHP: Undefined variable: HTTP_SERVER_VARS
Tienes una web en PHP funcionando perfectamente y tienes que pasarla a otro servidor, pero resulta que en el nuevo servidor, aunque la web carga, aparece un error similar a este:
Notice: Undefined variable: HTTP_GET_VARS in /var/www/web/fichero.php on line 298
El problema es que el servidor no reconoce la variable HTTP_GET_VARS. El uso es de este tipo de variables está obsoleto, por lo que debemos modificar nuestro código sustituyendo todas estas variables por estas otras:
- $HTTP_POST_VARS por $_POST
- $HTTP_GET_VARS por $_GET
- $HTTP_SERVER_VARS por $_SERVER
- $HTTP_SESSION_VARS por $_SESSION
- $HTTP_POST_FILES por $_FILES
- $HTTP_COOKIE_VARS por $_COOKIE
- $HTTP_ENV_VARS por $_ENV
Así, por ejemplo, el código quedará de esta manera al cambiar HTTP_GET_VARS por _GET:
$HTTP_GET_VARS['PHP_SELF'];
Pasa a ser:
$_GET['PHP_SELF'];
Esa sería la forma recomendable, pero si no podemos modificar el código, podemos modificar la configuración PHP del servidor para que reconozca las variables obsoletas (esto solo es posible para versiones de PHP anteriores a la 5.3) poniendo a On la opcion register_globals register_long_arrays, de una de las siguientes maneras:
- desde las opciones de PHP del panel de nuestro hosting (cpanel, plesk, ispconfig...)
- desde el archivo php.ini, tras lo que tendriamos que reiniciar Apache
- añadiendo al archivo .htaccess de la raiz de la web la línea php_flag register_long_arrays = On
Solo restaría regresar a la web y comprobar si el error ha desaparecido.
Más información: