2017-03-03 4 views
0

Tus.IO를 사용하려고하지만 디버깅하기가 복잡합니다.symfony2 웹 사이트의 PhpTus 통합

http://tus.io/

나는 FPM 모드에서 Symfony2.8/Apache2.4/PHP5.6로 만든 내 웹 사이트에서 PHP-TUS 서버를 통합하는 것입니다. 내가 작곡가를 통해 공급 업체의 폴더에 PhpTus을 배치 한

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    # DocumentRoot /var/www/hebergementbcdi_upload/web 
    Alias /upload /var/www/hebergementbcdi_upload/web 

    <Directory "/var/www/hebergementbcdi_upload/web"> 
     <IfModule mod_proxy_fcgi.c> 
     <Files ~ (\.php$)> 
      SetHandler "proxy:fcgi://127.0.0.1:9000" 
     </Files> 
     </IfModule> 

     Header set Access-Control-Allow-Origin http://10.133.169.137 
     Header set Access-Control-Allow-Headers "Authorization" 

     AllowOverride All 
     Allow from All 

     Options -Includes -ExecCGI 
    </Directory> 
</VirtualHost> 
  • :

    1. 은 여기 내 아파치 가상 호스트 (루트에되지에서 내 웹 사이트 만에/업로드 하위 폴더)이다. 경로 :/hebergeurs/V1/upload_tus 기본값 :

      아래 upload_tus_io 같은

    2. 내가 구성한 routing.yml {_controller : UploadBcdiBundle : 업로드 : uploadTusIO}

    3. 내가 만든 클라이언트에서이

      * Url : /hebergeurs/V1/upload_tus 
      * 
      * @param  Symfony\Component\HttpFoundation\Request    $request      Requête http en cours. 
      * 
      * @return  Symfony\Component\HttpFoundation\Response    $response      Réponse http au format JSON 
      */ 
      public function uploadTusIOAction(Request $request) { 
      
           $upload_data_path = $this->getParameter('upload_data_path'); 
      
           // Create and configure server 
           $server = new \PhpTus\Server($upload_data_path, 
                         '/hebergeurs/V1/upload_tus', 
                         array('prefix' => 'php-tus') 
           ); 
      
           // Run server 
           $response = $server->process(true); 
      } 
      

    같은 컨트롤러, 내가 TUS 업로드를 사용 (파이썬 클라이언트)이 같은 :

    인증 'foo는'

    --header DATA.zip http://10.133.169.138/upload/hebergeurs/V1/upload_tus --chunk 크기 256,000을 TUS-업로드하지만 난이 오류했습니다 :

    [2017-03-03 16:50:00,551] INFO Creating file endpoint Traceback (most recent call last): File "/usr/local/bin/tus-upload", line 11, in load_entry_point('tus.py==1.2.0', 'console_scripts', 'tus-upload')() File "/usr/local/lib/python2.7/dist-packages/tus.py", line 83, in _cmd_upload metadata=args.metadata) File "/usr/local/lib/python2.7/dist-packages/tus.py", line 162, in create raise TusError("Create failed: %s" % response) tus.TusError: Create failed:

    당신에게 어떤 idead 되세요을 .

    감사합니다.

  • 답변

    0

    마지막으로 요청을 리디렉션하기 위해 .htaccess 파일을 만들지 않고 문제를 해결했습니다.

    나는 routing.yml에 그런 식으로 처리했습니다 파이썬 클라이언트가 PHP 백엔드와 함께 작동하지 않습니다

    # Upload with TUS.io 
    upload_tus_io: 
        path: /hebergeurs/V1/upload_tus/files/{upload_filename} 
        defaults: { _controller: UploadBcdiBundle:Upload:uploadTusIO } 
        methods: ['POST','PATCH'] 
        requirements: 
         upload_filename: "[a-z0-9]*" 
    

    그리고 내가 사용했던 PHP TUS.io 클라이언트 때문이다.

    require_once __DIR__ . '/php-tus/src/PhpTus/Client.php'; 
    require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Abort.php'; 
    require_once __DIR__ . '/php-tus/src/PhpTus/Exception/BadHeader.php'; 
    require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Curl.php'; 
    require_once __DIR__ . '/php-tus/src/PhpTus/Exception/File.php'; 
    require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Max.php'; 
    require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Request.php'; 
    require_once __DIR__ . '/php-tus/src/PhpTus/Exception/Required.php'; 
    
    $filename = '/home/admin/DATA.zip'; 
    $endpoint = 'https://<my_ip>/upload/hebergeurs/V1/upload_tus/files/'; 
    
    $client = new PhpTus\Client(); 
    $client->setFilename($filename); 
    $client->setEndPoint($endpoint); 
    $client->upload(); 
    

    는 자체 서명 certiticates에 동의 Client.php를 해킹하는 것을 잊지 마세요 : 나에게

    // Disable SSL vérification 
    curl_setopt($handle, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($handle, CURLOPT_SSL_VERIFYPEER, 0); 
    

    감사합니다.