PHP会话上传进度“未定义索引:upload_progress_” WordPress - php

我正在创建文件上传进度栏,但无法使其正常运行。相对代码如下。

相关表单HTML

<form action="" method="post" id="uploadForm" enctype="multipart/form-data">
            <div id="uploadFields">
                <?php
                    $val = time();
                    echo '<input type="hidden" class="progress" name="'.ini_get('session.upload_progress.name').'" value="'.$val.'" required />";
                ?>
                <label>Select file to upload:</label>
                    <input type="file" name="fileToUpload" id="fileToUpload" required><br><br>

Ajax.js

$(document).ready(function(){
$('#uploadForm').submit(function(){
/***I insert picture to upload page, this responds to my later AJAX request***/
    sendRequest();
});
});

function sendRequest() {
var progress = $(".progress").val();
$.ajax({ 
    type: "POST",
    url: ajaxurl,
    data: { 
        PHP_SESSION_UPLOAD_PROGRESS: progress,
        action: "uploadProgress"
    },
    success:function(result){
        console.log(result);
        handleResponse(result);
    }
});
}

function handleResponse(result) {
if (result < 100) {
    $("#loading-gif").css("left", result + "%");
    setTimeout("sendRequest()", 1000);
}
}

PHP进度功能

function uploadProgress(){

    $key = ini_get("session.upload_progress.prefix") . $_POST[ini_get("session.upload_progress.name")];
/*** error line ***/    echo print_r($_SESSION[$key]);
    if(!empty($_SESSION[$key])) {
        $current = $_SESSION[$key]["bytes_processed"];
        $total = $_SESSION[$key]["content_length"];
        echo $current < $total ? ceil($current / $total * 100) : 100;
    }else {
        echo 'empty';
    }

    wp_die();
}

我遍历了数十个论坛,阅读了php.net上的手册和说明,尝试了各种形式的尝试来使此工作正常进行,但是却无法正常工作。
具体来说,使用上面的代码,我得到了错误日志:
PHP注意:*未定义的索引:第581行的D:***** \ wordpress \ ***** \ functions.php中的upload_progress_1468284727 *

“ 14682284727”是一个动态值(通过time()进行设置),以确保没有争用情况,并且每次上传都是唯一的-希望这也应该消除任何缓存问题。我已经回显了表格中给出的时间,并且将相同的变量传递给了progress函数以及错误日志,它们是完全相同的。
我没有通过FastCGI运行PHP。

我在PHP.ini中设置了所有与session_upload_progress相关的指令,重要的是session.upload_progress.enabled =开,session.upload_progress.cleanup =关,这应该允许我打印出数组。
我正在运行PHP 5.4.5,并具有对所有文件/文件夹的管理员访问权限。所有其他会话变量都将保留,并且我成功地逐页使用它们。

我已经做了很多荒谬的调试,但是没有任何进展。我被困在这一点上。进度函数返回1以打印$ _SESSION数组,并以数组的大小为空。
没有基于Flash的解决方案。我只想知道我错过了什么,我做错了什么,我可以做得更好?

任何想法/建议将不胜感激。

参考方案

一个古老的问题,但这可能会帮助发现相同问题的任何人进行故障排除。

如果确定满足使用会话正确执行上传进度的所有要求,则可以通过手动检查会话文件来开始进行故障排除。根据您的服务器配置,其路径会有所不同,您可以使用session_save_path()进行检查。

如果文件生成正确,则应使用开发人员的工具手动检查发送的内容和发送的顺序。

同样在AJAX调用中,您必须将这两个更改为false:

contentType: false,
processData: false,

有关jQuery.ajax() API documentation的更多信息

WordPress:在网站上仅加载一个jquery脚本 - php

刚要启动一个WordPress网站,但注意到它当前正在加载两个jquery文件,一个包含在wp-includes中,另一个来自我的header.php,是否有一种方法可以使wordpress在前端加载wp-includes?做了大量的搜索,并且对此的唯一提及似乎包括以下代码,但是我找不到关于它的任何文档,任何想法?<?php wp_enqueue_sc…

Wordpress the_permalink性能与将值存储在变量中 - php

制作新主题和创建具有链接到所述文章的多个对象的文章视图的最有效方法是什么?我是C#专业人士,但是在PHP中我并不如我所愿。假设您有:while(have_posts()) <h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?>…

移动Wordpress后,登录有效,但不再有管理员访问权限 - php

将wordpress从旧的ISP转移到新的ISP之后,我在管理员访问权限/对仪表板的访问方面遇到了麻烦。传输是通过将所有文件(包括.htaccess)从旧服务器复制到新服务器,转储旧数据库并将其放在新服务器上并调整wp-config.php中数据库的所有设置来完成的。通过在计算机上设置主机条目,我可以验证一切正常,并且显示了所有内容。这是我的问题。使用旧的和…

用于带国际支付网关的PayWalls和订阅模型的WordPress插件 - php

我正在寻找我的WordPress问题的解决方案。我想建立一个可供访客访问免费内容的信息网站。他们还可以通过以下两种方式访问​​付费内容:阅读时付费或每日,每周和每月订阅。我该如何处理?有谁知道可以满足这些需求的插件?该插件必须能够接受任何国际支付网关。我发现的大多数内容仅限于PayPal和Stripe。在我国,只有消费者才能使用PayPal付款,而商家则无法…

Ajax在“最新帖子”小部件wordpress中加载更多按钮 - php

我创建了最近发布的Wordpress小部件,并尝试为其创建“加载更多”按钮以通过ajax(例如twitter)获取更多“最近发布的链接”,是否有任何制作方法的教程? 参考方案 看一下infinite scroll插件的来源,它确实可以满足您的需求,并且开发类似的东西,this可以为您提供帮助。