Troubleshooting

HTTP package issues and fixes.

Request Issues

Input returns null

Problem: $request->input('field') returns null.

Cause: POST data not parsed or wrong content type.

Fix: Check request method and content:

// Verify POST method
if ($request->method() !== 'POST') {
    // Handle GET separately
}

// For JSON body
$data = $request->json();

File upload missing

Problem: $request->file('doc') returns null.

Cause: Form missing enctype or file too large.

Fix: Check form and limits:

<!-- Form must have enctype -->
<form method="post" enctype="multipart/form-data"></form>
// Check PHP limits
ini_get('upload_max_filesize');
ini_get('post_max_size');

Response Issues

JSON response shows HTML

Problem: JSON response wrapped in WordPress HTML.

Cause: Response sent too late in WordPress lifecycle.

Fix: Send response before WordPress outputs:

$hooks->wpAction('wp_ajax_my_action', function () {
    Response::json(['data' => $data])->send();
    exit; // Important: stop WordPress
});

Headers already sent

Problem: Cannot modify header information - headers already sent

Cause: Output before response headers.

Fix: Remove any early output:

// Bad: Debug output before response
var_dump($debug);
return Response::json($data);

// Good: No output before headers
return Response::json($data);

Redirect not working

Problem: Response::redirect() doesn't redirect.

Cause: Output already sent or missing exit.

Fix: Check for prior output:

// Check if headers sent
if (headers_sent($file, $line)) {
    error_log("Headers sent in {$file} at line {$line}");
}

// Ensure exit after redirect
Response::redirect($url)->send();
exit;