首页  >  问答  >  正文

php - file_put_contents在apache上失效

代码

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

黄舟黄舟2713 天前702

全部回复(7)我来回复

  • PHP中文网

    PHP中文网2017-05-16 13:05:18

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

    回复
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:05:18

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

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

    回复
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:05:18

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

    回复
    0
  • 怪我咯

    怪我咯2017-05-16 13:05:18

    是否有权限!!!

    回复
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:05:18

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

    回复
    0
  • 巴扎黑

    巴扎黑2017-05-16 13:05:18

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

    然后看看是否能写入。

    回复
    0
  • 習慣沉默

    習慣沉默2017-05-16 13:05:18

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

    回复
    0
  • 取消回复