2015-04-02 111 views
0

我收到來自使用BlueImp批量上傳的間歇性錯誤。我在其他LAMP機器上使用了相同的代碼/配置,沒有問題。BlueImp jQuery文件上傳和ModSecurity錯誤

在一個小時內,我使用BlueImp上傳工作批量上傳,從接受任何我投擲的文件到在每次上傳時拋出ModSecurity錯誤。我已與主持人聯繫,看看我的IP是否被標記或具有這種性質。

鑑於所涉及的BlueImp代碼是巨大的,我不會發布我的所有代碼,只有從UploadHandler.php初始化。

有沒有人遇到過這個之前,或者如果任何人有建議重新調試這第一步?

錯誤:

[Thu Apr 02 09:58:44 2015] [error] [client 72.211.122.10] ModSecurity: Input filter: Failed writing 4380 bytes to temporary file (rc 523). [hostname "www.mysite.com"] [uri "/blueimp/server/php/"] [unique_id "VR11M83E320AACugsU0AAAAI"] 
[Thu Apr 02 09:58:44 2015] [error] [client 72.211.122.10] ModSecurity: Multipart parsing error: Multipart: writing to "/tmp/20150402-095817-VR11Kc3E320AACohTxMAAAAE-file-KiCWWc" failed [hostname "www.mysite.com"] [uri "/blueimp/server/php/"] [unique_id "VR11Kc3E320AACohTxMAAAAE"] 

UploadHandler.php:

<?php 
/* 
* jQuery File Upload Plugin PHP Class 8.3.1 
* https://github.com/blueimp/jQuery-File-Upload 
* 
* Copyright 2010, Sebastian Tschan 
* https://blueimp.net 
* 
* Licensed under the MIT license: 
* http://www.opensource.org/licenses/MIT 
*/ 

class UploadHandler 
{ 

    protected $options; 

    // PHP File Upload error message codes: 
    // http://php.net/manual/en/features.file-upload.errors.php 
    protected $error_messages = array(
     1 => 'The uploaded file exceeds the upload_max_filesize directive in php.ini', 
     2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form', 
     3 => 'The uploaded file was only partially uploaded', 
     4 => 'No file was uploaded', 
     6 => 'Missing a temporary folder', 
     7 => 'Failed to write file to disk', 
     8 => 'A PHP extension stopped the file upload', 
     'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini', 
     'max_file_size' => 'File is too big', 
     'min_file_size' => 'File is too small', 
     'accept_file_types' => 'Filetype not allowed', 
     'max_number_of_files' => 'Maximum number of files exceeded', 
     'max_width' => 'Image exceeds maximum width', 
     'min_width' => 'Image requires a minimum width', 
     'max_height' => 'Image exceeds maximum height', 
     'min_height' => 'Image requires a minimum height', 
     'abort' => 'File upload aborted', 
     'image_resize' => 'Failed to resize image' 
    ); 

    protected $image_objects = array(); 

    function __construct($options = null, $initialize = true, $error_messages = null) { 
     $this->response = array(); 
     $this->options = array(
      'script_url' => $this->get_full_url().'/', 
      'upload_dir' => '/home/audubonimages/audubonimages.nolaflash.com/media/', 
      'upload_url' => '/media/', 
      'user_dirs' => true, 
      'mkdir_mode' => 0755, 
      'param_name' => 'files', 
      // Set the following option to 'POST', if your server does not support 
      // DELETE requests. This is a parameter sent to the client: 
      'delete_type' => 'DELETE', 
      'access_control_allow_origin' => '*', 
      'access_control_allow_credentials' => false, 
      'access_control_allow_methods' => array(
       'OPTIONS', 
       'HEAD', 
       'GET', 
       'POST', 
       'PUT', 
       'PATCH', 
       'DELETE' 
      ), 
      'access_control_allow_headers' => array(
       'Content-Type', 
       'Content-Range', 
       'Content-Disposition' 
      ), 
      // Enable to provide file downloads via GET requests to the PHP script: 
      //  1. Set to 1 to download files via readfile method through PHP 
      //  2. Set to 2 to send a X-Sendfile header for lighttpd/Apache 
      //  3. Set to 3 to send a X-Accel-Redirect header for nginx 
      // If set to 2 or 3, adjust the upload_url option to the base path of 
      // the redirect parameter, e.g. '/files/'. 
      'download_via_php' => false, 
      // Read files in chunks to avoid memory limits when download_via_php 
      // is enabled, set to 0 to disable chunked reading of files: 
      'readfile_chunk_size' => 10 * 1024 * 1024, // 10 MiB 
      // Defines which files can be displayed inline when downloaded: 
      'inline_file_types' => '/\.(gif|jpe?g|png)$/i', 
      // Defines which files (based on their names) are accepted for upload: 
      'accept_file_types' => '/.+$/i', 
      // The php.ini settings upload_max_filesize and post_max_size 
      // take precedence over the following max_file_size setting: 
      'max_file_size' => null, 
      'min_file_size' => 1, 
      // The maximum number of files for the upload directory: 
      'max_number_of_files' => null, 
      // Defines which files are handled as image files: 
      'image_file_types' => '/\.(gif|jpe?g|png)$/i', 
      // Use exif_imagetype on all files to correct file extensions: 
      'correct_image_extensions' => false, 
      // Image resolution restrictions: 
      'max_width' => null, 
      'max_height' => null, 
      'min_width' => 1, 
      'min_height' => 1, 
      // Set the following option to false to enable resumable uploads: 
      'discard_aborted_uploads' => true, 
      // Set to 0 to use the GD library to scale and orient images, 
      // set to 1 to use imagick (if installed, falls back to GD), 
      // set to 2 to use the ImageMagick convert binary directly: 
      'image_library' => 1, 
      // Uncomment the following to define an array of resource limits 
      // for imagick: 
      /* 
      'imagick_resource_limits' => array(
       imagick::RESOURCETYPE_MAP => 32, 
       imagick::RESOURCETYPE_MEMORY => 32 
      ), 
      */ 
      // Command or path for to the ImageMagick convert binary: 
      'convert_bin' => 'convert', 
      // Uncomment the following to add parameters in front of each 
      // ImageMagick convert call (the limit constraints seem only 
      // to have an effect if put in front): 
      /* 
      'convert_params' => '-limit memory 32MiB -limit map 32MiB', 
      */ 
      // Command or path for to the ImageMagick identify binary: 
      'identify_bin' => 'identify', 
      'image_versions' => array(
       // The empty image version key defines options for the original image: 
       '' => array(
        // Automatically rotate images based on EXIF meta data: 
        'auto_orient' => true 
       ), 
       'medium' => array(
        'max_width' => 800, 
        'max_height' => 600 
       ), 
       'thumbnail' => array(
        // Uncomment the following to use a defined directory for the thumbnails 
        // instead of a subdirectory based on the version identifier. 
        // Make sure that this directory doesn't allow execution of files if you 
        // don't pose any restrictions on the type of uploaded files, e.g. by 
        // copying the .htaccess file from the files directory for Apache: 
        //'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/thumb/', 
        //'upload_url' => $this->get_full_url().'/thumb/', 
        // Uncomment the following to force the max 
        // dimensions and e.g. create square thumbnails: 
        //'crop' => true, 
        'max_width' => 80, 
        'max_height' => 80 
       ) 
      ), 
      'print_response' => true 
     ); 
     if ($options) { 
      $this->options = $options + $this->options; 
     } 
     if ($error_messages) { 
      $this->error_messages = $error_messages + $this->error_messages; 
     } 
     if ($initialize) { 
      $this->initialize(); 
     } 
    } 

    protected function initialize() { 
     switch ($this->get_server_var('REQUEST_METHOD')) { 
      case 'OPTIONS': 
      case 'HEAD': 
       $this->head(); 
       break; 
      case 'GET': 
       $this->get($this->options['print_response']); 
       break; 
      case 'PATCH': 
      case 'PUT': 
      case 'POST': 
       $this->post($this->options['print_response']); 
       break; 
      case 'DELETE': 
       $this->delete($this->options['print_response']); 
       break; 
      default: 
       $this->header('HTTP/1.1 405 Method Not Allowed'); 
     } 
    } 

    [snip] 

在這之後是從https://github.com/blueimp/jQuery-File-Upload/blob/master/server/php/UploadHandler.php

回答

0

所有默認功能,在這種情況下,事實證明,我的主機具有在/ tmp我的VPS之外的VPS已滿。