2016-07-24 207 views
1

這個簡單的代碼創建一個文件,當頁面刷新,但它不工作。file_put_contents無法在服務器上工作

<?php 
    $fileName="test1.html"; 
    $content="<h1>header</h1>"; 
    file_put_contents($fileName,$content); 
?> 

從我所看到的,用戶必須創建一個文件

lrwxrwxrwx. 1 admin1 root   13 Jul 10 22:35 html -> /var/www/html 

什麼可能阻止文件的創建任何想法所需的所有特權?

+0

下'admin1'所以PHP運行? – Eun

+0

顯示的錯誤是什麼? – Drakes

+0

@FirstOne所有的php都由用戶Admin1-rw-r - r--所有。 1 admin1 root 77 Jul 24 16:04 file.html -rw-rw-r--。 1 admin1 Ian 241 Jul 21 16:37 form_email.php -rw-rw-r--。 1 admin1 Ian 725 Jul 23 18:31 forms_basics.php -rw-rw-r--。 1 admin1 Ian 215 Jul 21 22:11 form_script.php -rw-rw-r--。 1 admin1 Ian 245 Jul 21 21:55 helloworld2.php -rw-r - r--。 1 admin1 Ian 114 Jul 24 17:30 helloworld.php -rw-r - r--。 1 admin1 root 18 Jul 20 13:07 include.php -rw-r - r--。 1 admin1 Ian 383 Jul 15 11:31 index.html [/ CODE] – Matrix1977

回答

0

html是符號鏈接/var/www/html

ls -ldZ /var/www/html 
drwxr-xr-x. 2 admin1 brahim system_u:object_r:httpd_sys_content_t:s0 274 Jul 24 17:36 /var/www/html 

你不需要爲符號鏈接的寫權限,但對於符號鏈接的目標。

此外,它是不是具有的權限,但其運行apache Web服務器(通常www-dataapache在Fedora),用戶需要這些權限。

也給所有用戶的權限寫信給你的web目錄是一個壞主意,所以讓我們試試這個:

  1. 創建/var/www/html一個子目錄叫data

    mkdir /var/www/html/data 
    
  2. 爲其apache用戶授予可寫入權限:

    chown apache:root /var/www/html/data 
    chmod 700 /var/www/html/data 
    
  3. 修改你的腳本編寫到這個目錄:

    $fileName="data/test1.html"; 
    
+0

@jakue我得到錯誤消息 chown:無效用戶:'www-data:root'我想我可能已經刪除了用戶www-data錯誤。我無法在cat/etc/passwd中找到這個用戶:( – Matrix1977

+0

)如果你刪除系統用戶不會感到驚訝,不適合你。從一個乾淨的安裝開始,應該可以讓你前進。 – Jakuje

+0

我修改了答案以反映'apache'用戶。在Debian上使用'www-data'。使用'apache'用戶應該完成這項工作。 – Jakuje

相關問題