Elxis CMS Forum
Ελληνικό Forum => Δημόσιο Βήμα => Topic started by: ArXoS on September 01, 2009, 15:45:51
-
Γεια σας .. παίρνω στο error_log πολλά μηνύματά όπως το παρακάτω
PHP Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 3065067 bytes) in /home/...../public_html/....../....../.......php on line ......
σε διάφορα αρχεία του elxis και του smf που έχω εγκατεστημένα, σε διάφορες γραμμές των αρχείων .. το μόνο που έχουν κοινά τα μηνύματα, είναι το
Allowed memory size of 16777216 bytes exhausted (όλα στο ίδιο σημείο μνήμης)
Καταλαβαίνω οτι κάτι παίζει μετά τα 16ΜΒ μνήμη ..
Τι μπορώ να κάνω για να λυθεί αυτό το πρόβλημα ? έχω στην php μου memory_limit στα 64M και πάνω στο μηχάνημα 1G μνήμη (με μόνο ένα domain). Δε βλέπω πουθενά να χρειάζεται άλλη μνήμη ή cpu, παρά μόνο αυτό το error
Καμιά βοήθεια ????
να συμπληρώσω : PHP Version 5.2.8
-
Από ότι φαντάζομαι το memory_size είναι 16mb και όχι 64mb. Μπορεί να έχεις βάλει στο php.ini 64mb αλλά από κάπου αλλού να υπερκαλύπτεται και να γίνεται 16mb. Για να βεβαιωθείς πόσο είναι πήγαινε στο elxis:
διαχείριση -> σύστημα -> πληροφορίες συστήματος -> καρτέλα "πληροφορίες για την php".
Δες τις τιμές "Local Value" και "Master Value" για την παράμετρο "memory_limit".
Εσένα σε ενδιαφέρει το "Local Value" το οποίο αν δεν υπάρχει υπερκάλυψη (πχ μέσω htaccess ή ini_set) θα είναι ίδιο με το "Master Value".
Tip 1: Στους περισσότερους server τρέχουν 2 apache, ένας για τα site Και ένας για το control panel με διαφορετικά php.ini. Βεβαιώσου πως ρυθμίζεις το σωστό php.ini.
Tip 2: Όταν αλλάζεις κάτι στο php.ini μετά να κάνεις restart τον apache.
/etc/init.d/apache2 restart
ή
/etc/init.d/apache restart
ή
service httpd restart
ή όπως αλλιώς είναι στο σύστημά σας.
-
οχι, με τα restart μου κανονικά και με τις επεμβάσεις μου ελεγμένες από php_info
(http://i250.photobucket.com/albums/gg243/polladam/masa2/Image3.jpg)
Το άλλαξα τώρα σε 32Μ
Τι να πω .. μπας και είναι χτυπημένο κάποιο αρχείο ?
κοιτάω τα php αρχεία που μου δείχνει στις σειρές του λάθους, και όλα έχουν εκεί εντολή που συσχετίζεται με το $buffer
τρώω ένα τέτοιο error ανά 3-4 ώρες περίπου
-
αχα !!!! στο ένα αρχείο βρήκα τις πρώτες σειρές την επέμβαση
@ini_set('register_long_arrays', 1);
@ini_set('memory_limit', '16M');
γράφει παραπάνω
* @ Author: Ioannis Sannos (aka DataHell)
εσύ μου την έχεις κάνει τη δουλειά και ψάχνομαι τόσες μέρες βρε ????
να τη σβήσω την γραμμή ?
-
Μουάχαχαχαχα, σαμποταααααααάζ ;D
Πιο αρχείο είναι αυτό; Μήπως είχαμε κάνει παλαιότερα κάνα "πείραγμα" για να "κάτσει" κάποιο παλιό script; Το register_long_arrays είναι κλασσικό για παλιά script (php 4.x). Κάντο 64mb το memory_limit να είσαι σίγουρος (για 1gb συνολική ram καλά είναι). Σβήσε τη γραμμή αλλά κοίτα μήπως χρειάζεται να αφήσεις το register_long_arrays (αν δεν χρειάζεται σου συστίνω να τη σβήσεις και αυτή - είναι αρχαιολογία).
-
οκ .. το αρχείο είναι όντως παλιό
είναι το bridges/smf11rc3/smf11rc3.php για το elxis 2006.4
όλα τα άλλα αρχεία που ακολουθούν, είναι αρχεία του SMF. Να υποθέσω οτι αυτό προκαλούσε και στα αρχεία του smf το Allowed memory size of 16777216 bytes exhausted ?
-
Ναι αυτό ήταν. Έκανε υπερκάλυψη την ρύθμιση του php.ini αλλά μόνο κατά την γεφύρωση. Γι αυτό και σου έβγαζε μόνο τότε το πρόβλημα. Πάντως βλέπεις και μόνος σου ότι η γέφυρες είναι πολύ απαιτητικές. Τα 16mb είναι αρκετή μνήμη και θα έπρεπε να φτάνει για σχεδόν όλα τα script (το elxis μέγιστο να καταναλώσει 8-9). Γι αυτό και τις εγκαταλήψαμε. Η γεφύρωση 2 μεγάλων εφαρμογών είναι λάθος ως τακτική. Στη συγκεκριμένη γέφυρα το register_long_arrays χρειάζεται για το smf, το elxis δεν το έχει ανάγκη. Αν έχεις παλιά έκδοση του smf άστο ως έχει, μη σβήσεις τη γραμμή αυτή.
-
οκ datahell .. solved για άλλη μια φορά :D
Ευχαριστώ
PS. Αν θυμηθείς να την έχεις βάλει και πουθενά αλλού αυτή την εντολή ;D ;D στείλε μου ένα prive