Vaihda mime_content_type → getimagesize, lisää testiendpoint
mime_content_type() vaatii fileinfo-laajennuksen joka ei ehkä ole käytössä Pleskissä → PHP kaatuu fatal erroriin → HTTP 500 tyhjä body. getimagesize() on osa GD-kirjastoa, lähes aina saatavilla. Testiendpoint: upload.php?test kertoo onko PHP käynnissä ja mitkä laajennukset on saatavilla. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
19
upload.php
19
upload.php
@@ -6,7 +6,14 @@
|
||||
ob_start();
|
||||
error_reporting(0);
|
||||
|
||||
$allowed_mime = ['image/jpeg', 'image/png', 'image/gif', 'image/webp'];
|
||||
// Testiendpoint: avaa upload.php?test selaimessa — pitäisi näyttää {"ok":"php_running"}
|
||||
if (isset($_GET['test'])) {
|
||||
ob_clean();
|
||||
header('Content-Type: application/json');
|
||||
echo json_encode(['ok' => 'php_running', 'gd' => function_exists('getimagesize'), 'fileinfo' => function_exists('mime_content_type')]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$max_bytes = 20 * 1024 * 1024; // 20 Mt
|
||||
|
||||
header('Content-Type: application/json');
|
||||
@@ -42,11 +49,15 @@ if ($f['size'] > $max_bytes) {
|
||||
exit;
|
||||
}
|
||||
|
||||
$mime = mime_content_type($f['tmp_name']);
|
||||
if (!in_array($mime, $allowed_mime, true)) {
|
||||
// getimagesize() on osa GD-kirjastoa (ei vaadi fileinfo-laajennusta)
|
||||
$imginfo = @getimagesize($f['tmp_name']);
|
||||
$type_map = [IMAGETYPE_JPEG => 'image/jpeg', IMAGETYPE_PNG => 'image/png',
|
||||
IMAGETYPE_GIF => 'image/gif', IMAGETYPE_WEBP => 'image/webp'];
|
||||
$mime = $imginfo ? ($type_map[$imginfo[2]] ?? null) : null;
|
||||
if (!$mime) {
|
||||
ob_clean();
|
||||
http_response_code(415);
|
||||
echo json_encode(['error' => 'Only images (jpeg/png/gif/webp) allowed']);
|
||||
echo json_encode(['error' => 'Vain kuvat (jpeg/png/gif/webp) hyväksytään']);
|
||||
exit;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user