Je n'ai pas d'Open_Basedir, PHP peut accéder à/etc/usr/proc/home, etc. mais pas/TMP.
tMPFS est le montage sur/TMP (/ TMP Type TMPFS (RW)), c'est aussi la raison pour laquelle je veux utiliser le dossier/TMP.
Mes fichiers appartiennent à HTTP (utilisateur pour Nginx et PHP) et lisible par tout le monde.
Sudo -u http cat /tmp/file
fonctionne mais quoi que ce soit à l'intérieur d'un script PHP ne fonctionne pas (comme File_Exist () ou Fichier ()).
eDIT: L'erreur Afficher le journal:
PHP Warning: file(/tmp/ydlw/pid): failed to open stream: No such file or directory in /srv/http/ydlw/status.php on line 267
edit2: J'ai testé le problème dans l'autre sens. J'ai fait
touch("/tmp/boo");
file_exist("/tmp/boo");
et File_Exist retourner vrai pour que le fichier soit créé. Ensuite, j'ai regardé à l'intérieur/TMP et aucun fichier "boo" ne peut être trouvé là-bas. C'est ce que j'avais peur, PHP ne "voir" le point de montage. Pourquoi est-ce que cela et comment puis-je résoudre ce problème?
J'ai découvert pourquoi, bien, quelqu'un m'a donné le conseil global.
Ce n'est ni la faute de php ou de TMPFS. Le coupable était SystemD et son système de sécurité PrivateTmp
.
Pour ceux qui entrent dans le même problème que je faisais, le service PHP (et probablement d'autres) ont l'option PrivateTmp
option à true
dans le script SystemD (/usr/lib/systemd/system
).
Dans ce cas, un nouveau /tmp
est créé et isolé de l'autre. Toutes les données enregistrées à l'intérieur sont supprimées une fois que le service est arrêté.
C'est une mesure de sécurité depuis /tmp
Peut contenir beaucoup d'informations sensibles et de script PHP ne sont pas toujours sécurisés.
Pour désactiver cela, copiez simplement le script à l'intérieur /etc/systemd/system
(Pour éviter toute écrasement de vos modifications après une mise à jour) et définir PrivateTmp
sur false
.
Vous pouvez également définir deux services ou plus pour partager le même/TMP à l'aide de JoinsNamespaceOf
.
Pour plus d'informations> man systemd.exec