Eu falei sobre isso e o problema parece estar dentro dos componentes do Agavi, especificamente:
lib/agavi/src/filter/AgaviExecutionFilter.class.php
E dentro do método writeCache()
:
@mkdir(AgaviConfig::get('core.cache_dir') . DIRECTORY_SEPARATOR .
self::CACHE_SUBDIR .
DIRECTORY_SEPARATOR . implode(DIRECTORY_SEPARATOR ,
array_slice($groups, 0, -1)), 0777, true);
Eu coloquei uma linha do logger neste código e vi que o mkdir está tentando criar recursivamente um diretório como:
/usr/local/icinga-www/app/cache/content/amF2YXNjcmlwdF9jb250ZW50/QXBwS2l0X1dpZGdldHMvU3F1aXNoTG9hZGVy
Eu apaguei isso, reiniciei o apache, mas o problema persistiu.
Neste ponto, o servidor estava executando o PHP 5.2.17.
Eu atualizei o PHP para o 5.3.5 e este problema resolveu-se magicamente.
Por interesse, coloquei o PHP de volta no 5.2.17 para ver se havia alguma diferença entre o comportamento da função mkdir()
naquela versão em comparação com a do 5.3.5. Um script de teste mostrou que tudo o que o PHP fez foi avisar que a pasta existia em ambas as versões, não houve nenhum erro de hardware.
Além disso, e bizarramente, o icinga-web começou a trabalhar com o PHP 5.2.17 .... e eu não tenho ideia do porquê. Eu verifiquei os arquivos php.ini de ambas as versões pensando que as configurações de error_reporting podem ter mudado, mas elas eram as mesmas (exceto que o PHP 5.3.5 é definido como E_ALL & ~E_NOTICE | E_DEPRECATED
, enquanto 5.2.17 é definido como E_ALL & ~E_NOTICE
).
Espero que isso seja útil para qualquer outra pessoa que encontre o mesmo problema.