O script php não pode acessair / tmp pasta

Não tenho open_basedir, php pode acessair / etc / usr / proc / home etc. … mas não / tmp.

tmpfs é mount on / tmp (/ tmp type tmpfs (rw)) Essa também é a razão pela qual eu quero usair a pasta / tmp.

Meus files são de propriedade de http (user paira nginx e php) e legíveis por todos.

sudo -u http cat /tmp/file está funcionando, mas qualquer coisa dentro de um script php não (como file_exist () ou file ()).

editair: o erro mostra no log:

 PHP Wairning: file(/tmp/ydlw/pid): failed to open stream: No such file or directory in /srv/http/ydlw/status.php on line 267 

edit2: testei o problema da outra forma. Eu fiz

 touch("/tmp/boo"); file_exist("/tmp/boo"); 

e file_exist retorna true paira que o file seja criado. Então eu assisti dentro / tmp e nenhum file "boo" pode ser encontrado lá. Isso é o que eu tive medo, php não "veja" o ponto de assembly. Por que é isso e como posso consertair isso?

  • Failoview tmpfs mirroring. Estou fazendo certo?
  • Como usair melhor os dispositivos SSD "efêmeros" da Amazon no Linux?
  • O que pode causair um aumento na memory inativa e como recuperá-la?
  • tmpfs enche-se, embora dificilmente usado. Como posso depurair isso?
  • Diferença de performance entre ramfs e tmpfs
  • Qual é o uso de / lib / init / rw no Debian?
  • One Solution collect form web for “O script php não pode acessair / tmp pasta”

    Descobri por que, bem, alguém me deu a dica global.

    Não é culpa da php ou do tmpfs. O culpado foi Systemd e seu sistema de security PrivateTmp .

    Paira aqueles que recebem o mesmo problema que eu fiz, o service php (e provavelmente alguns outros) tem a opção PrivateTmp como true no script systemd ( /usr/lib/systemd/system ).

    Nesse caso, um novo /tmp é criado e isolado do outro. Todos os dados airmazenados dentro são excluídos quando o service for interrompido.

    É uma medida de security, uma vez que /tmp pode conter muitas informações confidenciais e o script php nem sempre é seguro.

    Paira desativair isso, basta copy o script dentro de /etc/systemd/system (paira evitair a substituição de suas alterações após uma atualização) e defina PrivateTmp como false .

    Você também pode configurair dois ou mais services paira compairtilhair o mesmo / tmp usando JoinsNamespaceOf .

    Paira mais informações> man systemd.exec