>  Q&A  >  본문

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

黄舟黄舟2712일 전698

모든 응답(7)나는 대답할 것이다

  • PHP中文网

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

    /tmp 디렉토리에는 최대 권한이 있어야 합니다. 권한 문제가 없나요? 오류 메시지를 열고

    회신하다
    0
  • phpcn_u1582

    phpcn_u15822017-05-16 13:05:18

    먼저 쓰기 허용 여부를 폴더 권한으로 확인한 후

    으아악

    회신하다
    0
  • 巴扎黑

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

    사용자 질문이 있나요? 명령줄에서는 루트 사용자인 것으로 추정되므로 실행이 성공할 수 있습니다. 귀하의 웹 디렉터리가 다른 사용자 그룹에 속해 있는지 확인하세요. 이 사용자 그룹에는 임시 디렉터리에 대한 읽기 및 쓰기 권한이 없습니다.

    회신하다
    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
  • 취소회신하다