Προς το περιεχόμενο

Ξαφνικό πρόβλημα με upload σε codeigniter... (Για δυνατούς λύτες)


killer76

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Με έχει αρρωστήσει ένα πρόβλημα εδω και ένα μήνα. Έχω ψάξει ότι μπορούσα να φανταστώ. Έχω ψάξει στο google, έκανα ερώτηση στο stackoverflow, στο chatgpt και δεν μπορώ να βρω λύση με τίποταααα.

Πρόλογος: Το πρόβλημα αυτό ξεκίνησε ξαφνικά, μετά από 5 χρόνια λειτουργίας χωρίς το παραμικρό πρόβλημα. Χωρίς να έχω αλλάξει το παραμικρό στο site, στην php ή σε κάτι άλλο.και χωρίς να έχει αλλάξει κάτι στον σέρβερ (επικοινώνησα με τον host μήπως έχει αλλάξει κάτι στους πόρους, στα limits κλπ και μου είπε οτι δεν έχει αλλάξει τίποτα). Και αυτό είναι το περίεργο. Τι έγινε ξαφνικά???

Το project: Έχω φτιάξει ένα webapp για την επιχείρησή μου, να κρατάω κάποια αρχεία. Σε πολλές εγγραφές συνοδεύω τα δεδομένα μου και με φωτογραφίες. Οπότε όταν είμαι στην καρτέλα της εγγραφής, έχω και ένα input πεδίο για upload. Με το που σύρω ένα αρχείο ή το επιλέξω, γίνεται αυτόματο τριγκάρισμα της φόρμας, τρέχει ο controller στο backend, που ανεβάζει την εικόνα, δημιουργεί εγγραφή στην βάση και μετά ξανακάνει redirect στην σελίδα που ήμουν. Στην σελίδα αυτή στο κάτω μέρος εμφανίζονται όλες οι εικόνες που έχουν σχέση με αυτή την εγγραφή. Όλη αυτή η διαδικασία γινόταν τόσο γρήγορα που φαινόταν σαν να γίνεται και με ajax ή διαδικασία. Επίσης μέσα στο controller του upload, χρησιμοποιώ και βιβλιοθήκη για resize.

Το πρόβλημα: Όταν φτιάχνω μία νέα εγγραφή, πχ το ταμείο ημέρας και πάω να φορτώσω την πρώτη εικόνα, εκεί που παλιότερα το έκανε στιγμιαία και με γύρναγε στην ίδια οθόνη με την φωτογραφία από κάτω, τώρα κολλάει τελείως (το spinner του tab φαίνεται συνέχεια οτι κάνει upload), και πρέπει να πατήσω στοπ στο tab του browser και refresh. Τότε η σελίδα ανοίγει κανονικά και η εικόνα έχει φορτωθεί κανονικά. Το περίεργο είναι ότι σε κάθε επόμενη φωτογραφία, δουλεύει άψογα. Δηλαδή αν φορτώσω 2η, 3η, 4η φωτογραφία κλπ, πάει σφαίρα. Επίσης οι εικόνες που ανεβάζω είναι περίπου 3mb. Δοκίμασα πιο μικρές πχ 1mb και από οτι φάνηκε δεν έχουν πρόβλημα.

Τι έχω δοκιμάσει: 

  • Άλλον browser και υπολογιστή.
  • Αλλη version php (Default εχω 7.4)
  • Να αυξήσω κάποια όρια στην php. 
  • Να απενεργοποιήσω το κομμάτι του resize

Ο κώδικας:

function upload_tameia_photos(){
    $time= time();
    $mt_rand = mt_rand(100,999);
    $id = $_POST["tameia_id"];
    $year = date('Y');
    $config['upload_path'] = './assets/img-tameia';
    $config['allowed_types'] = 'gif|jpg|png';
    //$config['encrypt_name'] = true;
    $config['max_size'] = '6048';
    $config['max_width'] = '8000';
    $config['max_height'] = '6000';
    $config['file_name'] = $year.'-'.$id.'-'.$mt_rand.$time;
    $this->load->library('upload', $config);
    $data['title'] = "Upload Files";
    
    if (!$this->upload->do_upload('photos')) {
        $error = array('error' => $this->upload->display_errors());
        $this->load->view('templates/header', $data);
        $this->load->view('tameio_photo', $error);
        $this->load->view('templates/footer');
    } else {
        $imgName = $this->upload->data();
        $config['image_library'] = 'gd2';
        $config['source_image'] = './assets/img-tameia/'.$imgName["file_name"];
        $config['maintain_ratio'] = TRUE;
        $config['quality'] = '80%';
        $config['width'] = 1000;
        $config['new_image'] = './assets/img-tameia/'.$imgName["file_name"];
        $this->load->library('image_lib', $config);
        $this->image_lib->resize();
        
        $imgurl = $imgName["file_name"];
        $data = array(
            'ph_tameio_id'  => $id,
            'ph_tameia_url'   => $imgurl
        );

        $this->db->insert('phot_tameia', $data);
	redirect(base_url().'reports/tameio_view/'.$id);
    }
    
}

Υποσημείωση: Την στιγμή που κολλάει, κοιτάω αν έχει ανέβει η φωτογραφία στον host και αν έχει γίνει η εγγραφή στην mysql. Γίνονται άμεσα και τα δύο. Άρα, εκτός αν το καταλαβαίνω λάθος, φαίνεται σαν να κολλάει στο σημείο του redirect... Που ξανατονίζω, το σύστημα αυτό το δουλεύω 4-5 χρόνια, χωρίς να έχω το παραμικρό πρόβλημα.

Επεξ/σία από killer76
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Το να δημιουργηθεί πρόβλημα χωρίς να έχει αλλάξει τίποτα από τις δύο πλευρές δεν παίζει ως σενάριο. Ή στην δική σου μεριά έγινε κάποιο update/αλλαγή που στα χάλασε ή στον hosting provider. Να τονίσω ότι το update μπορεί να γίνει αυτόματα και ακούσια να δημιουργηθεί το πρόβλημα (δεν ρίχνω φταίξιμο σε κανέναν).

Δοκιμάσατε να αλλάξετε Server για να δείτε αν συνεχίζεται;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

16 λεπτά πριν, konet είπε

Το να δημιουργηθεί πρόβλημα χωρίς να έχει αλλάξει τίποτα από τις δύο πλευρές δεν παίζει ως σενάριο. Ή στην δική σου μεριά έγινε κάποιο update/αλλαγή που στα χάλασε ή στον hosting provider. Να τονίσω ότι το update μπορεί να γίνει αυτόματα και ακούσια να δημιουργηθεί το πρόβλημα (δεν ρίχνω φταίξιμο σε κανέναν).

Δοκιμάσατε να αλλάξετε Server για να δείτε αν συνεχίζεται;

Απο εμένα σίγουρα δεν άλλαξε κάτι. Τώρα σχετικά με τον σέρβερ, στηρίζομαι στην απάντηση του host provider

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1 ώρα πριν, killer76 είπε

Τώρα σχετικά με τον σέρβερ, στηρίζομαι στην απάντηση του host provider

Δεν αντιλέγω. Ξαναγράφω, δοκιμάσατε να αλλάξετε Server εντός του ίδιου provider για να δείτε αν θα επαναληφθεί και στον άλλο Server;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Κάνε comment out τα πάντα εκτός από το redirect. Αν παίξει με την μια ξέρεις πως δεν φταίει το redirect.

Επίσης μιας και λες πως μετά την 1η εικόνα όλα παίζουν καλά υποψιάζομαι πως κάτι μπαίνει σε sleep και την 1η φορά αργεί να "ξυπνήσει".

Κάτι ακόμα, είπες πως με 1mb εικόνα δεν αργεί αλλά μήπως έχεις ήδη δοκιμάσει πιο πριν με άλλη εικόνα γι'αυτό;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
1 ώρα πριν, Xvipes είπε

Κάνε comment out τα πάντα εκτός από το redirect. Αν παίξει με την μια ξέρεις πως δεν φταίει το redirect.

Επίσης μιας και λες πως μετά την 1η εικόνα όλα παίζουν καλά υποψιάζομαι πως κάτι μπαίνει σε sleep και την 1η φορά αργεί να "ξυπνήσει".

Κάτι ακόμα, είπες πως με 1mb εικόνα δεν αργεί αλλά μήπως έχεις ήδη δοκιμάσει πιο πριν με άλλη εικόνα γι'αυτό;

Λοιπόν. Έκανα comment τα πάντα και άφησα μόνο το redirect. Το έκανε πάλι το πρόβλημα. Όχι τόσες φορές αλλά το έκανε. 

Παρατήρηση: Τώρα που έκανα απανωτά τεστ, δεν το έκανε τόσο συχνά. Και παρατήρησα, οτι το έκανε, οσο μεσολαβούσε κάποιος χρόνος από το ένα τεστ στο άλλο. Αρα μήπως εκεί παίζει κάτι. Αυτό ίσως εξηγεί γιατί δεν το κάνει στην 2η και 3η εικόνα (επειδή είναι λίγος ο χρόνος από το κόλλημα και "χειροκίνητο ξεκόλλημα" της πρώτης).

Edit: Είμαι σχεδόν σίγουρος οτι τελικά το πρόβλημα είναι αν δεν έχει γίνει upload ακόμα ή έχει μεσολαβήσει χρόνος από το προηγούμενο upload ή refresh.

Επεξ/σία από killer76
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Ειδα τα errors του σερβερ (αν εννοείς στο εργαλείο "errors" του cpanel) και δοκίμασα να κάνω upload και παίρνω το παρακάτω error. Στα error logs του CI είδα κάποια error άσχετα και τα διόρθωσα (σε άσχετη σελίδα μία μη δηλωμένη μεταβλητή. Καμία σχέση με το πρόβλημα).

[Thu Mar 14 09:34:02.600859 2024] [error] [client 84.254.88.17] ModSecurity: Warning. [Rule: 'FILES|FILES_TMPNAMES' '!@rx ^$'] [id "77317957"] [msg "IM360 WAF: Track file upload||MV:/tmp/VlM2PU||Size:text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7||User:mysupp||SC:/home/mysupp/sites/myoffice/manage/index.php||WPU:||T:LITESPEED||"] [severity "NOTICE"] [tag "service_im360"] [tag "noshow"] [hostname "www.tositemou.gr"] [uri "/manage/upload_files/upload_tameia_photos"] [unique_id "tobMFk8gUG43cPA-ZlicqNyL"], referer: https://www.tositemou.gr/manage/reports/tameio_view/77

Δεν μπορώ να καταλάβω όμως τι ακριβώς λέει. Ξεχώρισα όμως και κάποιες λέξεις κλειδιά μέσα σε αυτό που παραπέμπει στο antimalware imunify360 και στο cache tool litespeed που έχει ο σέρβερ. Να επηρεάζουν αυτά? Αυτά ήταν πάντα στο σέρβερ όμως και δεν απενεργοποιούνται.

 

Επεξ/σία από killer76
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

5 ώρες πριν, CyberCr33p είπε

Ζήτησε από το webhost σου να απενεργοποιήσει το 77317957 rule του mod_security.

Δεν γινόταν αυτό αλλά απενεργοποίησα όλο το modsecurity που μου είπαν για το site. Το πρόβλημα συνεχίζεται...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ριξε μια ματιά την ώρα που συμβαίνει αυτό στο DevTools του browser αν βλέπεις κάποιο error στο console και επίσης στο Network tab τι γινεται με το συγκεκριμένο post request.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Υπάρχει και η "λύση" να το hostareis τοπικα, να πάρεις 1 backup να το σετάρεις σε 1 vanilla installation και να δεις τι παίζει, αν δλδ στο κάνει

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

10 ώρες πριν, bnvdarklord είπε

Ριξε μια ματιά την ώρα που συμβαίνει αυτό στο DevTools του browser αν βλέπεις κάποιο error στο console και επίσης στο Network tab τι γινεται με το συγκεκριμένο post request.

Στην κονσολα δεν μου βγαζει κατι γιατι δεν τρεχει κατι σε javascript. Στο network όση ώρα ήταν κολλημενο μου εβγαζε το upload_tameia_photos σε "εκκρεμότητα"

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...