php - file_put_contents在apache上失效
黄舟
黄舟 2017-05-16 13:03:18
0
7
737

代码

<?php

echo file_put_contents("/tmp/log.txt", "Hello world everyone.");

代码很简单,在浏览器和命令行上运行都显示成功,为:21。但是在浏览器运行后,/tmp/log.txt并不存在。而在命令行下,/tmp/log.txt创建成功(root和apache用户测试都没问题)。非常纠结。。。。。。。

操作系统: centos7

uname -r: 3.10.0-514.2.2.el7.x86_64

环境

都是通过yum install安装的,yum install httpd php5

黄舟
黄舟

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

Antworte allen(7)
Ty80

/tmp目录应该是最大权限,不会有权限问题吧?你把报错打开看看报错信息

phpcn_u1582

首先 确认文件夹权限 允不允许写入 然后

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

用户问题?命令行下估计你是root用户,所以能执行成功。看下是否你的web目录还属于其他用户组,并且这个用户组对temp目录没有读写权限。

刘奇

是否有权限!!!

给我你的怀抱

应该是权限问题。PHP操作tmp目录,也是不安全的,所以默认肯定不允许。
为什么说不安全?因为你可以写,就必然可以读(对PHP而言,基本不存在没设置过权限然后只能写不能读的)……这样的话,黑客就能读取好多信息啦

巴扎黑

简单粗暴测试: chmod -R 777 /tmp

然后看看是否能写入。

習慣沉默

浏览器运行 / 指的是网站根目录 命令行/指的是服务器根目录 请查看网站根目录是否有/tmp/log.txt 文件

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage