2011-05-19 66 views

回答

6

你不能,因爲這是不可能把任何一個只讀文件...

編輯其實,還有一種方法:

<?php 
    $u = umask(0377); // disables --wxrwxrwx permissions 
    $f = fopen("test", "w"); 
    umask($u); 
    fwrite($f, "this is a test\n"); 
    fclose($f); 
?> 

% php foo.php 
% ls -l test 
-r-------- 1 xxx xxx 14 19 May 10:27 test 
% cat test 
this is a test 

umask操作允許你創建讀/寫文件描述符,即使底層目錄條目是隻讀的。

+0

除了Alnitak之外的任何人:如果你的頭腦難以理解umask值(像我的那樣),記住權限位文件是與umask(並在反轉後移除執行位)。因此,使用該umask,新創建的文件將是0400(或者-r --------如果您更喜歡這種方式)。 – 2011-05-19 09:30:33

0

作爲解決方法,您可以先使用file_put_contents()存儲文件,然後使用ftp_chmod()來更改文件權限。

其他選項將通過命令行,但如果chmod被禁用,那麼exec也不太可能工作。如果您的託管服務商同時停用了這兩種服務,那麼這可能是有原因的。 (如果只是爲了減少支持成本)。