Ich fand seltsames Verhalten bezüglich php
und /tmp
Ordner. PHP verwendet einen anderen Ordner, wenn es mit /tmp
funktioniert. PHP 5.6.7, nginx, php-fpm.Php hat eine eigene/tmp in/tmp/systemd-private-NABCDE/tmp, wenn über nginx zugegriffen
Ich führe das gleiche Skript auf zwei Arten aus: über den Browser und über die Shell. Aber wenn es über den Browser gestartet wird, ist Datei nicht in Echt /tmp
Ordner:
<?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)
Wo ist die Datei? In/tmp
$ find/-name 185617.txt
/tmp/185617.txt
Wenn der Zugriff darauf über http://myserver.ru/script.php
I
File /tmp/185212.txt
bool(true)
string(38) "CentOS Linux release 7.0.1406 (Core)
bekommen Aber wo ist die Datei?
$ find/-name 185212.txt
/tmp/systemd-private-nABCDE/tmp/185212.txt
Warum php denkt, dass /tmp
in /tmp/systemd-private-nABCDE/tmp
sein sollte?
Sie haben Recht, aber das ist 'php-fpm', nicht' nginx'. Ich habe die Datei '/ usr/lib/systemd/system/php-fpm.service' Zeile' PrivateTmp = true' in 'PrivateTmp = false' geändert. Jetzt benutzt php den richtigen '/ tmp'-Ordner. –
wow das ist brilliant. genau das, was wir seit 2 Tagen gesucht haben :) –