Я обнаружил странное поведение в отношении папок php
и /tmp
. Php использует другую папку, когда работает с /tmp
. Php 5.6.7, nginx, php-fpm.
Я выполняю один и тот же скрипт двумя способами: через браузер и через оболочку. Но когда он запускается через браузер, файл находится не в реальной папке /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)
Где файл? В /tmp
$ find / -name 185617.txt
/tmp/185617.txt
Если получить к нему доступ через http://myserver.ru/script.php
, я получаю
File /tmp/185212.txt
bool(true)
string(38) "CentOS Linux release 7.0.1406 (Core)
Но где файл?
$ find / -name 185212.txt
/tmp/systemd-private-nABCDE/tmp/185212.txt
Почему php считает, что /tmp
должно быть в /tmp/systemd-private-nABCDE/tmp
?