asterisk.ctl and asterisk.pid were still trying to place the files in /var/run and since the user “asterisk” did not have ownership over /var/run it would not place the files there.
chowning /var/run to asterisk was a temporary resolution.
I had the same problem. I searched the internet for hours and tried everything without success. UNTIL I came across a German site, and found this fix that worked for me.
Without stating how your system is build this can easily be taken out of context and break a system.
By default (and the asterisk documentation) the astctlgroup should be asterisk. It is set that way when asterisk is built unless you override it during compile time and KNOW what you are doing. This value is the second part of the owner:group settings that is used for all files created by asterisk. So changing this to something that your system is not configured for, will break many more systems then fix them.