загрузка нескольких изображений с ошибкой 500 - PullRequest
0 голосов
/ 23 марта 2011

Я изменил скрипт, который нашел здесь, чтобы обрабатывать несколько загружаемых картинок одновременно.Однако, когда я пытаюсь запустить скрипт, он выдает ошибку.Я использую, чтобы скрипт позволял загружать только одну картинку за раз, и она работала нормально, без проблем.

Вот мой код.

Function uploadMultiple(){
    $config = array(
        'allowed_types' => 'jpg|png|jpeg|gif',
        'upload_path' => $this->board_path,
        'overwrite' => false,
        //'file_name' => $fileName

    );
    //print_r($config);

    $this->load->library('upload');
    $errorCount = 0;
    $results = array(
        'errorsPresent' => false,
    );
    $successCount = 0;

    //for each image...try to upload.  if it fails, add it to the error list.
    //keep a list of successful uploads.
    print_r($_FILES);
    for ($i = 0; $i<count($_FILES); $i++){
        echo 'here';
        $_FILES['userfile']['name']    = $_FILES['userfile' . $i]['name'];
        $_FILES['userfile']['type']    = $_FILES['userfile' . $i]['type'];
        $_FILES['userfile']['tmp_name'] = $_FILES['userfile' . $i]['tmp_name'];
        $_FILES['userfile']['error']       = $_FILES['userfile' . $i]['error'];
        $_FILES['userfile']['size']    = $_FILES['userfile' . $i]['size'];

        $config['file_name']     = 'img_' . time() . '.png'; //inserts the unix time into the file name.
        $config['upload_path']   = $this->board_path;
        $config['allowed_types'] = 'jpg|jpeg|gif|png';
        $config['max_size']      = '0';
        $config['overwrite']     = FALSE;
        $this->upload->initialize($config);

        if ( ! $this->upload->do_upload()){
            $results['errorsPresent'] = true;
            $results['error'][$errorCount] = $this->upload->display_errors();
            $errorCount ++;

        } else {
            $data = array('upload_data' => $this->upload->data());              
            $pictureData = $this->upload->data();
            $file_location = $pictureData['full_path'];
            $file_location = substr($file_location, 18);//this should probably be dynamic...
            $file_location = $this->db->escape($file_location);
            $results['success'][$successCount] = $file_location;

            chmod($pictureData['full_path'], 777); //don't need to give it execute permissions but oh well.
            $successCount ++;       
        }

    }

    return $results;
}

Вот ошибка 500.

Внутренняя ошибка сервера

Сервер обнаружил внутреннюю ошибку или неверную конфигурацию и не смог выполнить ваш запрос.

Пожалуйста, свяжитесь с администратором сервера, веб-мастером @ localhost и сообщите им овремя, когда произошла ошибка, и все, что вы могли сделать, возможно, вызвало ошибку.

Дополнительная информация об этой ошибке может быть доступна в журнале ошибок сервера.

Дополнительно, 500 InternalОшибка сервера произошла при попытке использовать ErrorDocument для обработки запроса.

Это то, что говорит файл журнала apache:

[Ср 23 марта 02:29: 41 2011] [ошибка] [клиент 129.21.129.32] ModSecurity: доступ запрещен с кодом 500 (этап 4).Сопоставление с образцом "(?: \ B (? :( ?: s (?: Список выбора), потому что он не содержится в (?: Статистической функции и нет | ни агрегатной функции, ни предложения GROUP BY | аргумент upplied)не является допустимым (? :( ?: M (?: S | y) | Postgre) SQL | O (?: racle | DBC))) | S (?: yntax error convertti ... "в RESPONSE_BODY. [file"/etc/apache2/conf.d/modsecurity/modsecurity_crs_50_outbound.conf"] [строка "23"] [id "970003"] [msg "Утечка информации SQL"] [серьезность "WARNING"] [тег "LEAKAGE / ERRORS"] [hostname "hostname.com"] [uri "/longboard/index.php/board/add"] [unique_id "TYmTVYEVgWYAAASKoIcAAAAJ"]

Основываясь на сообщении об ошибке, я думаю, что modsecurity блокируетсценарий по какой-то причине, но я не уверен почему. Любое понимание будет с благодарностью.

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 марта 2011

В конечном итоге это ошибка базы данных.Mod_security блокировал сообщение об ошибке.Я зашел в файл журнала mod_security и обнаружил, какое правило вызывает ошибку 500.Затем я вошел в файл с этим правилом и закомментировал его.Я перезапустил apache и перепроверил, а затем ошибка базы данных показалаЯ думаю оставить это правило закомментированным, так как это сервер разработки.(Он транслируется на весь мир, и причина, по которой я установил Mod_security.)

0 голосов
/ 23 марта 2011

попробуйте отключить mod_security, в .htaccess добавить это

SecFilterEngine Off
...