<?php
echo file_put_contents("/tmp/log.txt", "Bonjour tout le monde.");
Le code est très simple, et il montre le succès lors de son exécution sur le navigateur et la ligne de commande, comme : 21
. Mais une fois le navigateur exécuté, /tmp/log.txt n'existe pas. Sous la ligne de commande, /tmp/log.txt a été créé avec succès (pas de problème pour les tests des utilisateurs root et Apache). Très confus. . . . . . .
uname -r
: 3.10.0-514.2.2.el7.x86_64
Ils sont tous installés via yum install, yum install httpd php5
Le répertoire /tmp doit avoir les autorisations maximales. N'y a-t-il pas de problème d'autorisation ? Ouvrez le message d'erreur et voyez le message d'erreur
Tout d'abord, confirmez les autorisations du dossier pour autoriser l'écriture, puis
Questions des utilisateurs ? On estime que vous êtes l'utilisateur root sous la ligne de commande, l'exécution peut donc réussir. Vérifiez si votre répertoire Web appartient à un autre groupe d'utilisateurs et si ce groupe d'utilisateurs ne dispose pas d'autorisations de lecture et d'écriture sur le répertoire temporaire.
Avez-vous l'autorisation ? ! !
Cela devrait être un problème d'autorisations. Il est également dangereux pour PHP d'exploiter le répertoire tmp, ce n'est donc certainement pas autorisé par défaut.
Pourquoi est-il dit que c'est dangereux ? Parce que si vous savez écrire, vous devez être capable de lire (pour PHP, il est fondamentalement impossible de se contenter d'écrire mais pas de lire sans définir les autorisations)... Dans ce cas, les pirates peuvent lire beaucoup d'informations
Test simple et brut : chmod -R 777 /tmp
Ensuite, voyez si cela peut être écrit.
Le navigateur en cours d'exécution / fait référence au répertoire racine du site Web. La ligne de commande / fait référence au répertoire racine du serveur. Veuillez vérifier s'il existe un fichier /tmp/log.txt dans le répertoire racine du site Web.