Quando vejo problemas semelhantes em nossos ambientes, parece que isso ocorre devido à maneira como o OpCache (por padrão) compartilha um único cache entre todos os usuários em um ambiente de hospedagem compartilhada. Um bug foi enviado (e você pode, e deve, ir votar para informar aos mantenedores como importante, isso pode ser para o seu caso de uso), embora nenhum compromisso tenha sido feito na entrega de uma correção.
TL; DR: Por padrão, quando o OpCache está habilitado, o cache usado para armazenar códigos de bytes compilados é compartilhado entre todos os usuários. Em um ambiente onde a hospedagem é compartilhada entre vários sites / usuários, isso pode resultar em um site que captura a saída em cache do php scripts de outro site ou, se configurações de segurança específicas estiverem habilitadas, mesmo gerando erros .
If you plan on using PHP-FPM with PHP 5.5+'s built in opcache, please read the blog post below before you actually do that. Turns out that the opcode cache can be read by any user on the server. This means that if there are say, 10 separate users, with their own vhosts and directories, and you configure one PHP-FPM pool per user, each user can still see what scripts are cached and their locations. Since they have read access to the cache they could potentially view all this data.
This is obviously a massive security concern, and even if no one exploits this, there is still a chance of scripts being read by the wrong user when generating a page, so websites could possibly be displaying the wrong data / info if there are multiple index.php scripts in the cache.
Embora nenhuma correção tenha sido lançada oficialmente, se você estiver usando o cPanel, este wiki tem uma maneira documentada de configurar o php-fpm pools a serem criados e protegidos por usuário e se você seguir as instruções abaixo, bem como as OBSERVAÇÕES IMPORTANTES na parte inferior desta resposta, deve ser capaz de obter a funcionalidade desejada sem erros
Essa postagem também documenta como você pode configurar isso manualmente por site / por usuário (embora eu possa apostar que isso pode se tornar tedioso se você estiver hospedando muitos sites). Se você não estiver usando o cPanel, pode ser necessário modificar os scripts para especificar seus caminhos individuais e nomes de usuários, em vez das variáveis que estão sendo usadas pelo mecanismo de configuração do cPanel.
NOTAS IMPORTANTES
Durante os testes e pesquisas adicionais, deparei-me com este artigo, que fornece alguns esclarecimentos que podem ser relevantes para o seu caso específico. situação:
- É necessário certificar-se de que o parâmetro
opcache.use_cwd
esteja definido comotrue
para a configuração do OpCache do seu aplicativo - ele é definido comofalse
por padrão e deixá-lo definido como padrão provavelmente causará colisões se você estiver hospedando mais de uma aplicação PHP no seu sistema:
First of all, probably in each typical project you will have to ensure that the opcache.use_cwd option is set to true. Enabling this setting means that the OpCache engine will look at the full file paths to distinguish between files with the same names. Setting it to false will lead to collisions between files with the same base name.
- Se você estiver executando um aplicativo desenvolvido pelo Zend Framework ou outra estrutura semelhante que faça uso de anotações, você TAMBÉM precisará garantir que as diretivas
opcache.load_comments
eopcache.save_comments
estejam definidas comotrue
. Você deve verificar essa sugestão com sua documentação de aplicativo / estrutura, pois a maioria já atualizou seus documentos com instruções específicas sobre como ativar o uso do OpCache adequadamente para seus sistemas:
There is also a setting that is important in tools and frameworks that make use of annotations. If you use Doctrine, Zend Framework 2 or PHP Unit, remember to set the opcache.load_comments and opcache.save_comments settings to true. In result, the documentation comments from your files will also be included in the precompiled code generated by OpCache. This setting will allow you to work with annotations without any disruptions.
If your project is based on a specific framework or a web application, it’s always a good idea to check the documentation for any guidelines regarding the OpCache configuration
NOTAS IMPORTANTES
Espero que isso tenha ajudado - e se você estiver usando o cPanel, deixe um comentário para nos informar como você lidou com essa parte da configuração! Veja também esta pergunta & comentários associados .