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;