shu*_*van 21 php nginx tmp centos7
我发现了php与/tmp文件夹有关的奇怪行为.Php在使用时使用另一个文件夹/tmp.PHP 5.6.7,nginx,php-fpm.
我以两种方式执行相同的脚本:通过浏览器和通过shell.但是当它通过浏览器启动时,文件不在真实/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'));
Run Code Online (Sandbox Code Playgroud)
php -f script.php
File /tmp/185617.txt
bool(true)
string(38) "CentOS Linux release 7.0.1406 (Core)
Run Code Online (Sandbox Code Playgroud)
文件在哪里?在/ tmp
$ find / -name 185617.txt
/tmp/185617.txt
Run Code Online (Sandbox Code Playgroud)
如果通过http://myserver.ru/script.php我获取它
File /tmp/185212.txt
bool(true)
string(38) "CentOS Linux release 7.0.1406 (Core)
Run Code Online (Sandbox Code Playgroud)
但文件在哪里?
$ find / -name 185212.txt
/tmp/systemd-private-nABCDE/tmp/185212.txt
Run Code Online (Sandbox Code Playgroud)
为什么php认为/tmp应该在/tmp/systemd-private-nABCDE/tmp?
Ign*_*ams 32
因为systemd配置为nginx为private/tmp.如果由于某种原因必须使用system/tmp,则需要将.service文件修改为"PrivateTmp = no".
| 归档时间: |
|
| 查看次数: |
14294 次 |
| 最近记录: |