Я нашел странное поведение относительно php
и /tmp
папки. Php использует другую папку, когда она работает с /tmp
. Php 5.6.7, nginx, php-fpm.Php имеет свой собственный/tmp in/tmp/systemd-private-nABCDE/tmp при доступе через nginx
Я выполняю тот же скрипт двумя способами: через браузер и через оболочку. Но когда он запускается через браузер, файл не в реальной /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
?
Вы правы, но это 'php-fpm', а не' nginx'. Я изменил файл '/ usr/lib/systemd/system/php-fpm.service' line' PrivateTmp = true' в 'PrivateTmp = false'. Теперь php использует правильную папку '/ tmp'. –
ничего себе это блестящий. правильно, что мы искали с 2-х дней :) –