也許我不明白如何php的chmod()函數應該工作,但我遇到它返回TRUE(表示成功),但實際上並沒有修改權限。PHP的chmod返回true爲成功,但實際上並沒有更改權限
我正在使用已上傳到我的Web服務器的tmp目錄的文件。
$fn = $value["tmp_name"];
$fps = fileperms($fn);
$testMsg .= "file permissions are $fps\n";
$testMsg .= "(which is " . substr(sprintf('%o', $fps), -4) . ")\n";
$arr = posix_getpwuid(fileowner($fn));
$testMsg .= "file owner is " . $arr["name"] . "\n";
$testMsg .= "running as: " . trim(shell_exec('whoami')) . "\n";
//can i chmod it?
$didChmod = chmod($fn, 0644);
$testMsg .= "chmod: $didChmod\n";
$fps = fileperms($fn);
$testMsg .= "NEW file permissions are $fps\n";
$testMsg .= "(which is " . substr(sprintf('%o', $fps), -4) . ")\n";
從上面的輸出是:
file permissions are 33152
(which is 0600)
file owner is www-data
running as: www-data
chmod: 1
NEW file permissions are 33152
(which is 0600)
正如你所看到的,CHMOD()報道的成功還沒有更改權限。
由於
它是否在支持權限的文件系統上?有時有網絡共享等問題 – Anigel
@Anigel - 是的,它是Linux。 –
目錄上的權限/所有者是什麼?還有,如果你shell_exec的chmod而不是使用內置的PHP會發生什麼? – Anigel