echo don't return me full string on production but work in developpement

echo don't return me full string on production but work in developpement

当我 运行 我的网站在本地主机上 Xampp 时,我没有这个错误,但在我的 ovh 服务器上这不起作用。

我解释一下, 我有一个 ajax 函数等待文件名将他注入应答器。 我打电话给生成文件名的控制器并回应他。 所以我有一个 var php 包含一个像 "main-2765b74ec.jpg".

这样的字符串

我需要回显这个变量,以便将他注入我的应答器。 在本地主机上这个工作完美,但在我的 ovh 服务器中,回显打印只是 "main-2765b74ec".

这就是我的问题,为什么 echo 不像在我的本地主机环境中那样给我完整的字符串。

可能是 ovh 的问题?

编辑:与 print()

相同的问题

php 调用 ajax :

public function tmp($request, $response) {
        $type = $request->getParam('name');
        $uploadedFile = $request->getUploadedFiles()['img'];
        $directory = dirname(dirname(__DIR__)) . '/public/img/tmp';
        if ($uploadedFile->getError() === UPLOAD_ERR_OK) {
            $filename = $this->moveUploadedFile($directory, $uploadedFile, $type);
            echo $filename;
        }
    }

以上:如果我执行 var_dump 这个 return 带有扩展名的完整字符串,如果我执行 var_dump 后跟一个回声,回声 return完整的字符串,但我必须在我的 js 中做更多的特性来隐藏所有 var_dump 部分。

php 姓名:

public function moveUploadedFile($directory, UploadedFile $uploadedFile, $type = 'any') {
    $extension = strtolower(pathinfo($uploadedFile->getClientFilename(), PATHINFO_EXTENSION));
    $basename = bin2hex(random_bytes(8));
    $filename = sprintf('%s.%0.8s', $basename, $extension);
    if ($type == 'main') {
        $filename = $type.'-'.$filename;
        if ($dh = opendir($directory)) {
            while (($file = readdir($dh)) !== false) {
                if ($file != '.' && $file != '..' && explode('-', $file)[0] == 'main') {
                    unlink($directory.'/'.$file);
                }
            }
            closedir($dh);
        }
    } else if ($type != 'any') {
        $filename = $type;
    }
    $uploadedFile->moveTo($directory . DIRECTORY_SEPARATOR . $filename);
    return $filename;
}

ajax :

function uploadFile(file) {
    let id = $(file).attr('id').substr(5)
    if (id != ('tmp')) {
        $('#form_'+id).submit()
    } else {
        let formData = new FormData()
        let params = $('#form_tmp').serializeArray()
        formData.append('img', $(file)[0].files[0])
        formData.append(params[0].name, params[0].value)
        $('#label').html("Uploading...").css({'background-color': 'transparent', 'cursor': 'wait'})
        $('#file_tmp').prop("disabled", true)
        // for (var pair of formData.entries()) { console.log(pair[0]+ ', ' + pair[1]) }
        $.ajax({
            url: '../image/tmp',
            method: 'post',
            data: formData,
            contentType: false, //'text/plain'
            processData: false
        }).done((filename) => {
            closeOverlay()
            if (params[0].value == 'main') {
                $('.container-main-img').html('<img src="../img/tmp/'+filename+'" id="tmpImgMain">').css({'height':'auto', 'border': 'none'})
            } else {
                $('.img-list').append(`<div class="img-block">
                                        <div class="toolbar img">
                                            <div>
                                                <button class="btn-tmp-img-up"><i class="icon-up-dir"></i></button>
                                                <button class="btn-tmp-img-down"><i class="icon-down-dir"></i></button>
                                            </div>
                                            <button class="btn-tmp-img-delete"><i class="icon-cancel"></i></button>
                                        </div>
                                        <img src="../img/tmp/`+filename+`">
                                    </div>`)
                ajustBtnTool()
            }
        })
    }   
}

从 Ajax 调用的函数返回时,您必须使用 'exit' 或 'die()',因此请在行 'echo $filename;' 之后直接添加其中之一。 =10=]