1--TEST-- 2PUT multipart 3--EXTENSIONS-- 4zend_test 5--SKIPIF-- 6<?php include "skipif.inc"; ?> 7--FILE-- 8<?php 9 10require_once "tester.inc"; 11 12$cfg = <<<EOT 13[global] 14error_log = {{FILE:LOG}} 15[unconfined] 16listen = {{ADDR}} 17pm = dynamic 18pm.max_children = 5 19pm.start_servers = 1 20pm.min_spare_servers = 1 21pm.max_spare_servers = 3 22EOT; 23 24$code = <<<'EOT' 25<?php 26$_POST = ['post_global']; 27$_FILES = ['files_global']; 28[$post, $files] = request_parse_body(); 29$file_path = __DIR__ . '/put_multipart_uploaded_file.txt'; 30move_uploaded_file($files[0]['tmp_name'], $file_path); 31$file_content = file_get_contents($file_path); 32unlink($file_path); 33echo json_encode([ 34 'post' => $post, 35 'files' => $files, 36 'file_content' => $file_content, 37 'post_global' => $_POST, 38 'files_global' => $_FILES, 39], JSON_PRETTY_PRINT); 40EOT; 41 42$tester = new FPM\Tester($cfg, $code); 43$tester->start(); 44$tester->expectLogStartNotices(); 45echo $tester 46 ->request(method: 'PUT', stdin: [ 47 'parts' => [ 48 [ 49 "disposition" => "form-data", 50 "param" => "name", 51 "name" => "get_parameter", 52 "value" => "foo", 53 ], 54 [ 55 "disposition" => "form-data", 56 "param" => "filename", 57 "name" => "uploaded_file", 58 "value" => "bar", 59 ], 60 ], 61 ]) 62 ->getBody(); 63$tester->terminate(); 64$tester->expectLogTerminatingNotices(); 65$tester->close(); 66 67?> 68--EXPECTF-- 69{ 70 "post": { 71 "get_parameter": "foo" 72 }, 73 "files": [ 74 { 75 "name": "uploaded_file", 76 "full_path": "uploaded_file", 77 "type": "", 78 "tmp_name": "%s", 79 "error": 0, 80 "size": 3 81 } 82 ], 83 "file_content": "bar", 84 "post_global": [ 85 "post_global" 86 ], 87 "files_global": [ 88 "files_global" 89 ] 90} 91--CLEAN-- 92<?php 93require_once "tester.inc"; 94FPM\Tester::clean(); 95$file_path = __DIR__ . '/put_multipart_uploaded_file.txt'; 96@unlink($file_path); 97?> 98