PHP Uploadprogress扩展函数总是返回null,没有上传数据

我使用php 5.3.2和uploadprogress扩展来获取使用zend框架上传过程中的进度条。即使是与Zend提供的演示不起作用。在Zend的示例代码 -PHP Uploadprogress扩展函数总是返回null,没有上传数据

if (isset($_GET['uploadId'])) { 

set_include_path(realpath(dirname(__FILE__) . '/../../../library')

. PATH_SEPARATOR . get_include_path());

require_once 'Zend/ProgressBar.php';

require_once 'Zend/ProgressBar/Adapter/JsPull.php';

require_once 'Zend/Session/Namespace.php';

$data = uploadprogress_get_info($_GET['uploadId']);

$bytesTotal = ($data === null ? 0 : $data['bytes_total']);

$bytesUploaded = ($data === null ? 0 : $data['bytes_uploaded']);

$adapter = new Zend_ProgressBar_Adapter_JsPull();

$progressBar = new Zend_ProgressBar($adapter, 0, $bytesTotal, 'uploadProgress');

if ($bytesTotal === $bytesUploaded) {

$progressBar->finish();

} else {

$progressBar->update($bytesUploaded);

}

}

uploadprogress_get_info总是返回null。我认为我的代码有问题,所以我下载了http://labs.liip.ch/uploadprogresssimple/index.php的工作示例,但即使在这种情况下,uploadprogress_get_info也总是返回null。

我的上传进度配置值

上传进度的支持使

版本1.0.1

uploadprogress.file.contents_template的/ tmp/upload_contents_%S

uploadprogress.file.filename_template的/ tmp/upt_%s.txt

uploadprogress.get_contents 1

在谷歌上搜索周围,我发现上传进度延期有一些问题与Suhosin Patch < 0.9.26但我使用了Suhosin补丁0.9.9.1

回答:

你是本地测试呢?我的意思是在localhost上测试这个?尝试上传到远程主机,或者测试一个相当大的文件(确保你之前碰到了upload_max_filesizepost_max_size)。

回答:

在谷歌上搜索周围,我发现上传进度扩展与了Suhosin补丁< 0.9.26一些问题,但我使用了Suhosin补丁0.9.9.1

我在同一个版本了Suhosin和有这个问题。也尝试过apc_fetch()suhosin也瘫痪了。

什么是一个愚蠢的补丁。要删除它,我必须重建php。为了f ***的缘故!

回答:

对我来说同样的问题,尽管我使用Zend_File_Transfer_Adapter来处理上传。它很有用,因为你可以验证上传文件(县)太:)

几个有用的方法,可以帮助你至少在你的服务器的配置是:

Zend_File_Transfer_Adapter_Http::isApcAvailable(); 

Zend_File_Transfer_Adapter_Http::isUploadProgressAvailable();

回答:

  1. 运行的phpinfo检查UploadProgress是否已安装,并且tmp目录是否可在服务器上写入。这意味着“uploadprogress.file.filename_template”指的是phpinfo中正确的tmp文件夹。

  2. 您可以运行以下代码来检查uploadprogress是否可写。

    < div id = " status " style = " border:1px black solid; <?php
    $ templateini = ini_get(" uploadprogress.file。filename_template ");
    $ testid = " thisisjustatest ";
    $ template = sprintf($ templateini,$ testid);
    $ templateerror = false;
    如果($模板& & $模板!= $ templateini & & @触按($模板)& & file_exists($模板)){
    //打印 '('。$ templateini”是可写的。真实路径将是'。str_replace($ testid,"%s ",realpath($ template))。')';
    unlink($ template);
    }其他{
    $ templateerror = TRUE;
    }
    如果(function_exists(" uploadprogress_get_info ")){
    如果($ templateerror){
    印刷的背景色:红色; "';
    打印" >问题。 ";
    if($ template == $ templateini){
    print " uploadprogress.file.filename_template($ templateini)在其中没有用于制作唯一临时文件的%s。请调整。 < br/> ";
    }其他{
    打印" $ templateini不可写。 < br/>请确保该目录存在并可写入Web服务器。 < BR/>
    或调整INI设置 'uploadprogress.file.filename_template' 的正确路径。 ";
    }
    } else {
    print'background-color:green; " > uploadprogress扩展程序已安装,并且初始检查显示一切都很好';
    }
    }其他{
    ? >
    background-color:red; " >未安装uploadprogress扩展。
    <?php}? >

    </DIV >

  3. 如果上面的代码提供了错误,指向php.ini文件中正确的tmp目录。在windows localhost机器上的Xampp tmp目录的php.ini文件中添加了以下行。 uploadprogress.file.filename_template = C:\ xampp \ tmp \ some_name_%s.txt

  4. 现在运行Zend demo,它应该工作或运行以下命令手动获取var_dump。 var_dump(uploadprogress_get_info($ _GET ['uploadId']));

以上是 PHP Uploadprogress扩展函数总是返回null,没有上传数据 的全部内容, 来源链接: utcz.com/qa/263270.html

回到顶部