おそらく、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() は成功を報告しましたが、パーミッションは変更されませんでした。
ありがとう