ZetCode

PHP chmod 函数

最后修改于 2025 年 4 月 3 日

PHP chmod 函数在类 Unix 系统上更改文件权限。 它允许设置所有者、组和其他人的读、写和执行权限。

基本定义

chmod 函数尝试更改指定文件的模式。 它有两个参数:文件名和八进制格式的权限模式。

语法:chmod(string $filename, int $mode): bool。 成功时返回 true,失败时返回 false。 模式应为八进制数(如 0755)。

基本 chmod 示例

这显示了使用 chmod 设置文件权限的最简单方法。

basic_chmod.php
<?php

declare(strict_types=1);

$file = "example.txt";
$result = chmod($file, 0644);

if ($result) {
    echo "Permissions changed successfully";
} else {
    echo "Failed to change permissions";
}

这会将权限设置为 644(所有者读/写,组/其他人只读)。 如果成功,该函数返回 true,否则返回 false。 始终检查返回值。

设置可执行权限

此示例使文件可由所有者执行,同时保留其他权限。

executable_chmod.php
<?php

declare(strict_types=1);

$script = "backup.sh";
$result = chmod($script, 0750);

if ($result) {
    echo "Script is now executable by owner";
} else {
    echo "Failed to make script executable";
}

模式 0750 为所有者提供完全权限(读/写/执行),为组提供读和执行权限,而为其他人提供无权限。 前导 0 表示八进制表示法。

目录权限

chmod 也可以更改目录的权限,而不仅仅是文件。

directory_chmod.php
<?php

declare(strict_types=1);

$dir = "uploads";
$result = chmod($dir, 0775);

if ($result) {
    echo "Directory permissions updated";
} else {
    echo "Failed to update directory permissions";
}

这设置了 775 权限(所有者/组的完全权限,其他人的读/执行权限)。 目录通常需要执行权限才能允许访问其内容。

限制性权限

此示例展示了如何为敏感文件设置非常严格的权限。

restrictive_chmod.php
<?php

declare(strict_types=1);

$config = "database.ini";
$result = chmod($config, 0600);

if ($result) {
    echo "Config file now has strict permissions";
} else {
    echo "Failed to secure config file";
}

模式 0600 仅向所有者提供读/写权限,组/其他人无权限。 这对于敏感文件(如包含密码的配置文件)很常见。

相对路径处理

此示例演示了使用 chmod 处理相对路径。

relative_path.php
<?php

declare(strict_types=1);

$relativeFile = "../logs/app.log";
$result = chmod($relativeFile, 0664);

if ($result) {
    echo "Log file permissions updated";
} else {
    echo "Failed to update log file permissions";
}

chmod 适用于相对路径。 但是,PHP 进程必须有权更改目标文件的权限才能成功。

最佳实践

来源

PHP chmod 文档

本教程涵盖了 PHP chmod 函数,并提供了实际示例,展示了如何在不同情况下更改文件权限。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。 自 2007 年以来,我一直在撰写编程文章。 迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。 我拥有超过十年的编程教学经验。

列出 所有 PHP 文件系统函数