28/07/2017 09:17:56 [σφάλμα] 2488#0: *460868 Το FastCGI στάλθηκε στο stderr: "Μήνυμα PHP: PHP Προειδοποίηση: Άγνωστο: Οι μεταβλητές εισόδου ξεπέρασαν τις 1000. Για να αυξήσετε το όριο αλλάξτε max_input_vars σε php.ini. in Άγνωστο στη γραμμή 0" κατά την ανάγνωση της κεφαλίδας απόκρισης από το upstream, πελάτης: 1.1.1.1, διακομιστής:www.itsvse.com, αίτημα: "POST /admin.php HTTP/1.0", upstream: "fastcgi://127.0.0.1:9000", host: "www.itsvse.com", παραπομπή: "http://www.it.com/xxx"
Ένα πρόβλημα που εμφανίζεται στο αρχείο καταγραφής σφαλμάτων php
Η αναφορά σφάλματος εξακολουθεί να είναι πολύ φιλική, θα πρέπει να είναι η εμφάνιση του μέγιστου αριθμού αναρτήσεων, έως και 1000 μηνυμάτων
Το έχουν συναντήσει και άλλοι στο Διαδίκτυο
Πριν από λίγο καιρό, συμμετείχα στην ανάπτυξη ενός APP API, ένα από τα οποία είναι η αποστολή του βιβλίου διευθύνσεων του πελάτη μέσω JSON, POST request API, στην αρχή της δοκιμής δεν βρήκε κανένα πρόβλημα και, στη συνέχεια, ένας πελάτης δοκίμασε τα μεταφορτωμένα δεδομένα ελλιπή, αναφέροντας ένα μη φυσιολογικό σφάλμα. Αργότερα, έλεγξα τα αρχεία καταγραφής και διαπίστωσα ότι τα δεδομένα που έλαβε η POST ήταν ελλιπή. Ανεξάρτητα από το αν μεταβιβάζονται 1.000 ή 2.000 κάθε φορά, εμφανίζονται μόνο περισσότερες από 300 καρτέλες στο αρχείο καταγραφής.
Μετά από ένα απόγευμα ρίψης, τελικά διαπίστωσα ότι το πακέτο JSON που δημοσιεύτηκε περικόπηκε από την PHP από προεπιλογή. Ο λόγος σχετίζεται με μια παράμετρο. php.ini max_input_vars στο αρχείο. Αυτή είναι μια μεταβλητή που έχει προστεθεί από την PHP 5.3.9.
max_input_vars, αναφέρεται στον αριθμό των υποβολών που εκφράζονται, με προεπιλεγμένη τιμή 1000. Ο επίσημος σκοπός της προσθήκης αυτής της μεταβλητής είναι η καλύτερη προστασία του διακομιστή από επιθέσεις. Αποφύγετε το φράξιμο.
Μετά την τροποποίηση, πρέπει να τροποποιήσετε και να επανεκκινήσετε το php-fpm
Διακοπή υπηρεσίας php-fpm
Έναρξη υπηρεσίας php-fpm
Μετά την επανεκκίνηση του php-fpm, το max_input_vars θα τεθεί σε ισχύ, λύνεται το πρόβλημα; Λύση, τροποποιήστε τις παραμέτρους php.ini max_input_vars και, στη συνέχεια, κάντε επανεκκίνηση για να λύσετε το πρόβλημα!
|