PHP Session上传进度EMPTY

时间:2014-06-02 11:42:51

标签: php session upload progress

这个问题被问了几百次,但是我在三天之后就遇到了这个问题,而且我总是很困惑。

我无法强制PHP在$ _SESSION(http://www.php.net/manual/en/session.upload-progress.php)中保存有关上传文件的详细信息。我所能获得的只是空会话。

我的代码最简单的例子:

的index.php

<?php 
    session_start();
    $_SESSION['test'] = 'TEST';
?>

<form action="index.php" method="POST" enctype="multipart/form-data">
    <input type="hidden" name="<?php echo ini_get("session.upload_progress.name"); ?>" value="123" />
    <input type="file" name="file1" />
    <input type="file" name="file2" />
    <input type="submit" />
</form>

<?php 
    print_r($_SESSION); 
?>

结果 - 点击提交后;)

Array ( [test] => TEST ) // nothing more...

php -i | grep upload_progress

session.upload_progress.cleanup => Off => Off
session.upload_progress.enabled => On => On
session.upload_progress.freq => 1% => 1%
session.upload_progress.min_freq => 1 => 1
session.upload_progress.name => PHP_SESSION_UPLOAD_PROGRESS => PHP_SESSION_UPLOAD_PROGRESS
session.upload_progress.prefix => upload_progress_ => upload_progress_

php -i | grep size

post_max_size => 2G => 2G
realpath_cache_size => 16K => 16K
upload_max_filesize => 2G => 2G
Command buffer size => 4096
Read buffer size => 32768

  • 上传文件的文件大小(本地主机): 2 x 1.5GB
  • 执行时间: 8秒
  • 我正在使用Gentoo linux和PHP 5.5.12,Apache 2编译没有快速CGI支持

参考书目:

https://stackoverflow.com/a/21851657/1125465 - 据我所知,我的配置中每个都可以。

https://stackoverflow.com/a/13186859/1125465 - 尝试了所有脚本和所有版本。 SESSION superglobal对每一个都是空的。

https://stackoverflow.com/a/11485170/1125465 - 我评论这个答案......不是答案。

请帮忙!我开始放松心情了。最好的问候。


UPDATE phpinfo()结果截图:

phpinfo() screenshot

值得注意的是,文件正在上传到tmp目录,没有任何麻烦。

2 个答案:

答案 0 :(得分:2)

我认为你错过了documentation

中最重要的部分
  

QUOTE

     

启用session.upload_progress.enabled INI选项后,PHP将能够跟踪正在上载的各个文件的上传进度。此信息对于实际上载请求本身并不特别有用,但在文件上载期间,应用程序可以将POST请求发送到单独的端点(例如,通过XHR)以检查状态。

这意味着会话信息仅在上传过程中可用。

因此,您必须在上传页面中编写一些javascript,以在服务器上触发另一个脚本来查询此信息并将其返回到javascript,以便您可以操纵滑块或用于显示的任何机制用户上传的进度。上传完成后,会话中的信息将被废弃。

答案 1 :(得分:2)

我有完全相同的问题。 解决方案是简单地将处理程序从FastCGI替换为PHP-FPM。 也适用于Mod PHP,但即使使用新的PHP,它也无法在FastCGI上运行。