Problem:
Gerade bei einem Update eines halbwegs aktuellen openSUSE-Systems aufgetreten:
Apache startet nicht mehr und im error_log
steht:
eAccelerator: Could not allocate 67108864 bytes, the maximum size the kernel allows is 33554432 bytes. Lower the amount of memory request or increase the limit in /proc/sys/kernel/shmmax. PHP Warning: [eAccelerator] Can not create shared memory area in Unknown on line 0 PHP Fatal error: Unable to start eAccelerator module in Unknown on line 0
Dieser Bug betrifft nicht nur SuSE-Systeme sondern nach meinen Nachforschungen auch weitere Linux-Distributionen.
Lösung:
Wie bereits in der Fehlermeldung angegeben reicht der Wert in /proc/sys/kernel/shmmax
nicht um ausreichend SHM-Speicher (ein Shared-Memory-Bereich) zu beanspruchen. Abhilfe schafft hier Spontan folgender Weg:
echo "67108864" > /proc/sys/kernel/shmmax
(Der Wert 67108864
ist der o.g. Fehlermeldung entnommen.)
Nun lässt sich Apache i.d.R. starten.
Nach einem Reboot ist dieser Wert aber wieder verloren. Daher muss er im System fest angemeldet werden:
sysctl -w kernel.shmmax=67108864 #und die neue /etc/sysctl.conf einlesen: sysctl -p
Letzterer Befehl mit dem Parameter -p
dient dazu die Werte aus der sysctl.conf
neu einzulesen. Dies macht nur Sinn, wenn man die oben genannte echo
-Anweisung übersprungen hat.