PHP:为什么 chmod() 将我的 file/folder 设置为 555 或 444?

PHP: Why is chmod() setting my file/folder to 555 or 444?

我创建了一个带有文件浏览器的网络应用程序。我正在尝试添加一个功能,用户可以通过 ajax 请求更改 chmod/permissions,该请求通过背面的 PHP 处理 -结束。

(旁注:我正在 运行使用 WAMP 连接本地)

所以最初,我正在阅读权限

substr(sprintf('%o', fileperms($relativePath)), -4)

获取此格式(0777、0644 等),如果不是 returns 类似 32726 的格式。此信息用于显示在 UI 中,以便用户了解最新信息.

但是,当我 运行 脚本时,我将它设置为 0777,它似乎 运行 没问题。但是当我再次阅读文件时,它 returns 0555 或 0444。有人知道我错过了什么吗?

您的网络服务器是否拥有它试图更改权限的文件?您可以通过测试其 return 值来检查 chmod 运行 是否正确或失败。如果网络服务器没有权限,它将 return FALSE。更多信息您可以阅读:http://php.net/manual/en/function.chmod.php

<?php 

$is_success = chmod("myfile.pdf", 777);
if($is_sucess) {
     echo "success<br />\n";
}

我意识到这不是问题,而是 chmod 命令在 windows/apache 设置中无法正常工作。