WordPress and “ALERT – configured POST variable limit exceeded – dropped variable” issue

ICustom Grunge WordPress Logot may happen in several hosting environments to discover this line in your webserver error log:

ALERT - configured POST variable limit exceeded - dropped variable 'name_of_dropped_variable' (attacker '20.2.26.212', file '/several dirs..../wp-admin/post.php'), referer: http://sitename.tld/wp-admin/post.php?post=181&action=edit

Well i discovered and solved this situation:

Cause: It is caused by PHP suhosin

you can “locate” it on your disk it using the “locate” command as follows

(if it is first time you use locate) type:

# updatedb

then type:

# locate suhosin

for my machine (debian) it is located within /etc/php5/conf.d/suhosin.ini

so you can edit it by typing:

#nano /etc/php5/conf.d/suhosin.ini

Now, look into your suhosin.ini fìle until you see the followings vars:

suhosin.post.max_vars

suhosin.request.max_vars

You want to remove the comment symbol “;” from the very beginning of these two lines and the increase the default value (it should be 200) to at least 500 in order to make complex wordpress themes working properly.

Remember to kick apache2 typing

#/etc/init.d/apache2 restart

Debian, Apache2, PHP5 AND GEOIP Logging

geolocalization apache ipHelo there! In these last days one client of mine asked me how to prevent non-italian visitors from seeing national ADS when they visit one or more websites.
The solution comes alog with builtin geoip functions in the php5-geoip package to be installed as usual using apt-get
After installed this package typing:
apt-get install php5-geoip

Now, what you have is a countries database, and if you want to be much more precise (as me for example) you can download a detailed Cities database typing the following set of commands:

cd /tmp
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz
sudo mv -v GeoLiteCity.dat /usr/share/GeoIP/GeoIPCity.dat

Now you own the entire planet cities database! 🙂

Let’s try it within a PHP web page: create a new file (or edit an existent one) and type:

print_r(geoip_record_by_name('php.net'));

It should return something like this:

Array
(
[country_code] => US
[country_code3] => USA
[country_name] => United States
[region] => CA
[city] => Sunnyvale
[postal_code] => 94089
[latitude] => 37.4249000549
[longitude] => -122.007400513
[dma_code] => 807
[area_code] => 408
)

Comments or questions are welcome, Also if you neew to setup a geo based service, now you know who could do it for you!

Cheers

VPS: Debian squeeze apt-get update returned an error code (1)

Also known as “E: Sub-process /usr/bin/dpkg returned an error code (1)“.
Well you are trying to run apt-get upgrade on a virtual private server running Debian squeeze (it can happen on Lenny too) hosted on several Xen based platforms.
It happens because grub cannot find your disk in order to rewrite your initrd image.

Since Xen kernel management is transparent to your machine itself, and it is all you need in order to boot your machine, you can remove grub with no fear, typing:

root@apple.com:~#apt-get remove grub-legacy grub-common

And yes, finally you will go to the end of your apt-get upgrade process.

Hope this can help out there!

 

Output of my machine follows:

Setting up linux-image-2.6.32-5-amd64 (2.6.32-39squeeze1) ...
Running depmod.
Running update-initramfs.
update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
Searching for GRUB installation directory ... found: /boot/grub
warning: grub-probe can't find drive for /dev/xvda1.
grub-probe: error: cannot find a GRUB drive for /dev/xvda1.  Check your device.map.
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.32-5-amd64.postinst line 799.
dpkg: error processing linux-image-2.6.32-5-amd64 (--configure):
subprocess installed post-installation script returned error exit status 2
Setting up linux-image-2.6.32-5-xen-amd64 (2.6.32-39squeeze1) ...
configured to not write apport reports
Running depmod.
Running update-initramfs.
update-initramfs: Generating /boot/initrd.img-2.6.32-5-xen-amd64
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-xen-amd64 /boot/vmlinuz-2.6.32-5-xen-amd64
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-xen-amd64 /boot/vmlinuz-2.6.32-5-xen-amd64
Searching for GRUB installation directory ... found: /boot/grub
warning: grub-probe can't find drive for /dev/xvda1.
grub-probe: error: cannot find a GRUB drive for /dev/xvda1.  Check your device.map.
run-parts: /etc/kernel/postinst.d/zz-update-grub exited with return code 1
Failed to process /etc/kernel/postinst.d at /var/lib/dpkg/info/linux-image-2.6.32-5-xen-amd64.postinst line 799.
dpkg: error processing linux-image-2.6.32-5-xen-amd64 (--configure):
subprocess installed post-installation script returned error exit status 2
configured to not write apport reports
Errors were encountered while processing:
linux-image-2.6.32-5-amd64
linux-image-2.6.32-5-xen-amd64
E: Sub-process /usr/bin/dpkg returned an error code (1)

After the cure, finally:

root@apple.com:~# apt-get remove grub-legacy grub-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
gettext-base libfreetype6 ucf os-prober
Use 'apt-get autoremove' to remove them.
The following packages will be REMOVED:
grub-common grub-legacy
0 upgraded, 0 newly installed, 2 to remove and 0 not upgraded.
2 not fully installed or removed.
After this operation, 5,931 kB disk space will be freed.
Do you want to continue [Y/n]? Y
(Reading database ... 17063 files and directories currently installed.)
Removing grub-legacy ...
Removing grub-common ...
Processing triggers for man-db ...
Processing triggers for install-info ...
Setting up linux-image-2.6.32-5-amd64 (2.6.32-39squeeze1) ...
Running depmod.
Running update-initramfs.
update-initramfs: Generating /boot/initrd.img-2.6.32-5-amd64
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-amd64 /boot/vmlinuz-2.6.32-5-amd64
Setting up linux-image-2.6.32-5-xen-amd64 (2.6.32-39squeeze1) ...
Running depmod.
Running update-initramfs.
update-initramfs: Generating /boot/initrd.img-2.6.32-5-xen-amd64
Examining /etc/kernel/postinst.d.
run-parts: executing /etc/kernel/postinst.d/initramfs-tools 2.6.32-5-xen-amd64 /boot/vmlinuz-2.6.32-5-xen-amd64
run-parts: executing /etc/kernel/postinst.d/zz-update-grub 2.6.32-5-xen-amd64 /boot/vmlinuz-2.6.32-5-xen-amd64

et voilà

And now

Some music