Saltar al contenido

Configuración de PHP tmp dir: la carga de PHP no funciona

Solución:

El problema descrito aquí fue resuelto por mí hace bastante tiempo, pero realmente no recuerdo cuál fue la razón principal por la que las cargas no funcionaban. Había varias cosas que debían arreglarse para que la carga pudiera funcionar. He creado una lista de verificación que puede ayudar a otras personas que tienen problemas similares y la editaré para que sea lo más útil posible. Como dije antes en el chat, estaba trabajando en un sistema integrado, por lo que algunos puntos pueden omitirse en sistemas no integrados.

  • Cheque upload_tmp_dir en php.ini. Este es el directorio donde PHP almacena archivos temporales mientras se cargan.

  • Cheque open_basedir en php.ini. Si se define, limita los derechos de lectura / escritura de PHP a la ruta especificada y sus subdirectorios. Asegurarse de que upload_tmp_dir está dentro de este camino.

  • Cheque post_max_size en php.ini. Si desea cargar archivos de 20 Mbyte, pruebe con algo un poco más grande, como post_max_size = 21M. Esto define el tamaño más grande del mensaje POST que probablemente esté utilizando durante la carga.

  • Cheque upload_max_filesize en php.ini. Esto especifica el archivo más grande que se puede cargar.

  • Cheque memory_limit en php.ini. Esa es la cantidad máxima de memoria que puede consumir un script. Es bastante obvio que no puede ser menor que el tamaño de carga (para ser honesto, no estoy muy seguro de ello, PHP probablemente se está almacenando en búfer mientras copia archivos temporales).

  • Asegúrese de estar comprobando el archivo php.ini correcto que es uno de los que utiliza PHP en su servidor web. La mejor solución es ejecutar el script con la directiva descrita aquí http://php.net/manual/en/function.php-ini-loaded-file.php (php_ini_loaded_file función)

  • Verifique con qué usuario se ejecuta php (vea aquí cómo hacerlo: ¿Cómo verificar con qué usuario se ejecuta php?). He trabajado en diferentes distribuciones y servidores. A veces lo es apache, pero a veces puede ser root. De todos modos, verifique que este usuario tenga derechos para leer y escribir en el directorio temporal y el directorio en el que está cargando. Verifique todos los directorios en la ruta en caso de que esté cargando en un subdirectorio (por ejemplo /dir1/dir2/-marque ambos dir1 y dir2.

  • En plataformas integradas, a veces es necesario restringir la escritura al sistema de archivos raíz porque se almacena en una tarjeta flash y esto ayuda a extender la vida útil de esta tarjeta. Si está utilizando scripts para habilitar / deshabilitar la escritura de archivos, asegúrese de habilitar la escritura antes de cargar.

  • Tuve serios problemas con el monitoreo de carga de PHP> 5.4 basado en sesiones (como se describe aquí http://phpmaster.com/tracking-upload-progress-with-php-and-javascript/) en algunas plataformas. Pruebe algo simple al principio (como aquí: http://www.dzone.com/snippets/very-simple-php-file-upload). Si funciona, puede probar mecanismos más sofisticados.

  • Si realiza algún cambio en php.ini, recuerde reiniciar el servidor para que se vuelva a cargar la configuración.

Luché con este problema durante mucho tiempo … Mi solución fue modificar el archivo php.ini, en la carpeta que contenía el script php. Esto fue importante, ya que modificar php.ini en la raíz no resolvió el problema (tengo un php.ini en cada carpeta para un control granular). Las entradas relevantes en mi php.ini se veían así … (es probable que el output_buffering no sea necesario para este problema)

output_buffering = On 
upload_max_filesize = 20M 
post_max_size = 21M
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *