эхо не возвращает мне полную строку на производстве, но работает в разработке - PullRequest
0 голосов
/ 07 октября 2018

Когда я запускаю свой сайт на localhost с Xampp, у меня нет этой ошибки, но на моем сервере ovh это не работает.

Я объясняю, у меня есть функция ajax, которая ожидает имя файла для инъекцииего в бализе.Я звоню своему контролеру, который генерирует имя файла и повторяет его.Итак, у меня есть var php, который содержит строку типа «main-2765b74ec.jpg».

Мне нужен эхо этого var, чтобы ввести его в мой баланс.На локальном хосте это работает отлично, но на моем ovh-сервере эхо-печать просто "main-2765b74ec".

Так что это мой вопрос, почему эхо не дает мне полную строку, как в моем env localhost.

Может быть проблема с 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 возвращает полную строку с расширением, и если я выполняю var_dump, сопровождаемый эхом, эхо возвращает полную строку, но я должен сделать больше traitement в моем 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()
            }
        })
    }   
}

1 Ответ

0 голосов
/ 07 октября 2018

При возврате из функции, вызываемой Ajax, вы должны использовать 'exit' или 'die ()', поэтому добавьте любой из них сразу после вашей строки 'echo $ filename;'.

...