php - file_put_contents ne fonctionne pas sur Apache
黄舟
黄舟 2017-05-16 13:03:18
0
7
736

Code

<?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. . . . . . .

Système d'exploitation : centos7

uname -r : 3.10.0-514.2.2.el7.x86_64

Environnement

Ils sont tous installés via yum install, yum install httpd php5

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

répondre à tous(7)
Ty80

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

phpcn_u1582

Tout d'abord, confirmez les autorisations du dossier pour autoriser l'écriture, puis

<?php
echo file_put_contents($_SERVER['DOCUMENT_ROOT']."/tmp/log.txt", "Hello world everyone.");
文件路径 如果不加 $_SERVER['DOCUMENT_ROOT'] 的话 要写成 "./tmp/log.txt" 这样  你在试试吧
巴扎黑

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal