Acudo aquí como último recurso, tengo 4 servidores con centos, uno de ellos, el más antiguo, aún con Centos 5.6 actualizado, los demás, Centos 6.4 y 6.6.
La función de php session.upload-progress (
http://php.net/manual/en/session.upload-progress.php) funciona solo en el primero (en los demás, ni se llega a tocar $_SESSION), decir que en todos está habilitado con los siguientes parámetros:
Decir, que todos éstos datos, he probado a cambiarlos probando todas las combinaciones posibles On Off 1 100 1%... etc...
Y que la configuración en todos los servidores, es idéntica al 100% en este aspecto.
En 3 de los 4 servidores, utilizo Plesk 12 actualizado y uno que no usa ningún panel.
En el que SÍ funciona es el que tiene Plesk 12 y Centos 5.6.
Y por supuesto, todos configurados como Módulo PHP y comprobado:
Para que puedan verlo, he habilitado 2 hosting provisionales:
El que sí funciona(Servidor más antiguo):
http://uploadprogresssifunciona.ddns...adprogress.php
Y el que no funciona (los más nuevos):
http://uploadprogressnofunciona.ddns...adprogress.php
el script que estoy utilizando para hacer las pruebas es exactamente el mismo en ambos sitios:
Código PHP:
<?php
$version = explode( '.', phpversion() );
if ( ($version[0] * 10000 + $version[1] * 100 + $version[2]) < 50400 )
die( 'PHP 5.4.0 or higher is required' );
if ( !intval(ini_get('session.upload_progress.enabled')) )
die( 'session.upload_progress.enabled is not enabled' );
session_start();
if ( isset($_GET['progress']) ){
$progress_key = strtolower(ini_get("session.upload_progress.prefix").'demo');
echo '<pre>Contenido de $_SESSION:';
print_r($_SESSION);
echo '</pre>';
$_SESSION['n']++;
if ( !isset( $_SESSION[$progress_key] ) ) exit( "uploading..." );
$upload_progress = $_SESSION[$progress_key];
/* get percentage */
$progress = round( ($upload_progress['bytes_processed'] / $upload_progress['content_length']) * 100, 2 );
exit( "Upload progress: $progress%" );
die();
}
$_SESSION['n'] = 0;
?>
<!doctype html>
<html>
<head>
<script type="text/javascript" src="/scripts/jquery.min.js"></script>
<script>
$(document).ready(function() {
var uploading = false;
$('form').submit(function() {
uploading = true;
$('#upload-frame').one('load', function(){
uploading = false;
});
function update_file_upload_progress() {
$.get("?progress", function(data) {
$("#file_upload_progress").html(data);
if (uploading) {
setTimeout( update_file_upload_progress, 500 );
}
})
.error(function(jqXHR, error) {
alert(error);
});
}
// first call
update_file_upload_progress();
});
});
</script>
</head>
<body>
<section>
<h1>Upload Form</h1>
<form action="" method="POST" enctype="multipart/form-data" target="upload-frame">
<input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="<?php //echo $uid; ?>demo" />
<p>
<label>File:</label>
<input type="file" name="file" required="required" />
</p>
<p><input type="submit" name="submit" value="Upload" /></p>
</form>
<div id="file_upload_progress" style="width: 1280px;min-height: 350px; border: 1px solid black; overflow-y: visible;"></div>
<iframe id="upload-frame" name="upload-frame" width="1280" height="100"></iframe>
</section>
</body>
</html>
¿Que estoy haciendo mal con los servidores más nuevos?
Para varios proyectos necesito de ésta función operativa... espero que puedan ayudarme.