首頁  >  問答  >  主體

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 天前705

全部回覆(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
  • 取消回覆