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

代碼

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

黄舟
黄舟

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

全部回覆(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 檔案

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!