É possível que as permissões não sejam suficientes para gravar nesse arquivo; você também precisa ter certeza de que o diretório também esteja acessível.
Exemplo de como estava no meu sistema (esta era a instalação padrão do Debian wheezy):
$ ls -ld /var/log/apache2/
drwxr-x--- 2 root adm 4096 Sep 4 15:59 /var/log/apache2/
$ ls -ld /var/log/apache2/php-error.log
-rw-r--r-- 1 www-data www-data 0 Jul 23 11:07 /var/log/apache2/php-error.log
Isso não funcionou, porque o diretório contendo o php-error.log
não estava acessível. Felizmente, mod_php (ou apache2?) Retorna para escrevê-lo no log de erros do VirtualHosts.
No meu caso, foi facilmente corrigível aplicando chmod o+rx /var/log/apache2/
, mas suas considerações de segurança podem variar. Após a correção:
$ ls -ld /var/log/apache2/
drwxr-xr-x 2 root adm 4096 Sep 4 15:59 /var/log/apache2/
E com essa mudança, funcionou.
PS: Primeiro, tive o mesmo problema que você teve, não consegui resolvê-lo em um dia. A pesquisa do Google não deu em nada. Pensei em escrever uma pergunta no serverfault. Enquanto preparava o título, recebi as sugestões e o seu foi o segundo hit. Percebi que escreveria uma pergunta duplicada, então pensei em escrever um comentário para a sua. Mas então eu queria escrever mais e pensar em escrever uma resposta que não resolvesse o problema, mas levasse à minha perspectiva também, talvez alguém pudesse ajudar. E enquanto preparava a resposta, descobri a solução. Isso é absolutamente fantástico sobre ... bem, qualquer coisa aqui. serverfault / stackexchange me ajudou a encontrar a solução por conta própria implicitamente com a ajuda de outras pessoas. Não pode ficar melhor, eu acho (além de resolver por conta própria).