Eu tenho uma instância php-fpm (8.0.16) que não pode gravar arquivos em um compartilhamento NFS. Estou usando um script php simples para testar:
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
$fp = fopen('test.txt', 'a');
fwrite($fp, 'test');
Ao executar via php-fpm, em um diretório que é um compartilhamento NFS, o seguinte erro é recebido:
Aviso: fopen(test.txt): Falha ao abrir fluxo: sistema de arquivos somente leitura em /path/to/nfs/share/test-write.php
No entanto, o seguinte código:
<?php
ini_set('display_errors', 1);
ini_set('error_reporting', E_ALL);
$fp = fopen('/tmp/test.txt', 'a');
fwrite($fp, 'test');
funciona como esperado.
O script funciona quando executado na linha de comando como o mesmo usuário usado para executar o php-fpm em um diretório em um compartilhamento NFS e em /tmp. Além disso, o script funciona como esperado em versões anteriores do php via php-fpm.
No arquivo systemd php-fpm.service havia uma configuração:
Isso é o que estava impedindo o php-fpm de poder gravar no compartilhamento NFS, pois foi montado em um subdiretório de /usr.
Como mencionado aqui, você pode substituir isso usando
systemctl edit php-fpm.service
e adicionando caminhos que precisam de acesso de gravação: