Pasos para seguridad al utilizar PHP en un servidor que está en internet (sitio público).

1. Deshabilitar las URL remotas para funciones que manejen archivos:
1. allow_url_fopen = Off
2. Register Globals
1. register_globals = Off
3. Restringiendo lo que PHP puede leer o escribir
1. open_basedir = /var/www/htdocs/files
4. Safe Mode (modo seguro)
1. safe_mode = Off
2. safe_mode_gid = On

5. Límites para los tiempos de ejecución
1. max_execution_time = 30 ; Max script execution time
2. max_input_time = 60 ; Max time spent parsing input
3. memory_limit = 16M ; Max memory used by one script
4. upload_max_filesize = 2M ; Max upload file size (tamaño máximo total que se envían (type=file) adjuntos con el form )
5. post_max_size = 8M ; Tamaño máximo del post (cuando se hace submit en el formulario, es la cuma de todas las variables del form + los del tipo "file")

6. Limitar el acceso a ciertos tipos de archivos mediante directivas de Apache
1.
2. Order allow,deny
3. Deny from all
4.

7. Mensajes de error y logging
1. display_errors = Off
2. log_errors = On

8. Ocultar la presencia de PHP
1. expose_php = Off

Lo correcto sería dejar el post_max_size mayor (>) que upload_max_filesize, puesto que el archivo(file) que se está subiendo(UPLOAD) va dentro del POST.