php nginx centos7 tmp

Php tiene su propio/tmp en/tmp/systemd-private-nABCDE/tmp cuando se accede a través de nginx



centos7 (2)

Porque systemd está configurado para dar a nginx un private / tmp . Si debe usar el sistema / tmp en su lugar por alguna razón, deberá modificar el archivo de servicio para que lea "PrivateTmp = no".

Encontré un comportamiento extraño con respecto a las carpetas php y /tmp . Php usa otra carpeta cuando trabaja con /tmp . Php 5.6.7, nginx, php-fpm.

Ejecuto el mismo script de dos maneras: a través del navegador y del shell. Pero cuando se inicia a través del navegador, el archivo no está en la carpeta real /tmp :

<?php $name = date("His"); echo "File /tmp/$name.txt/n"; shell_exec(''echo "123" > /tmp/''.$name.''.txt''); var_dump(file_exists(''/tmp/''.$name.''.txt'')); var_dump(shell_exec(''cat /etc/*release | tail -n 1''));

php -f script.php

File /tmp/185617.txt bool(true) string(38) "CentOS Linux release 7.0.1406 (Core)

¿Dónde está el archivo? En / tmp

$ find / -name 185617.txt /tmp/185617.txt

Si accedo a través de http://myserver.ru/script.php obtengo

File /tmp/185212.txt bool(true) string(38) "CentOS Linux release 7.0.1406 (Core)

Pero ¿dónde está el archivo?

$ find / -name 185212.txt /tmp/systemd-private-nABCDE/tmp/185212.txt

¿Por qué php piensa que /tmp debería estar en /tmp/systemd-private-nABCDE/tmp ?


Si está ejecutando varios sitios en el servidor, creo que querrá dejar PrivateTmp = yes para que cada sitio permanezca segregado incluso en el uso de archivos temporales. Podría ser un problema de seguridad de lo contrario, me imagino.