PHPを使用してファイルシステムの操作を処理する場合、アクセス許可と所有権の制御は、開発者がしばしば遭遇するタスクの1つです。 PHPは、ファイルまたはディレクトリの所有者情報を操作するための一連の機能を提供します。ここで、 LCHOWN()は、シンボリックリンクの所有者を変更するために使用される関数です。この記事では、基本的な構文、使用方法、および注意すべきことについてすぐに学びます。
LCHOWN()は、シンボリックリンクファイルの所有者を変更するために使用されるPHPの関数です。 chown()とは異なり、 lchown()はシンボルに従ってターゲットファイルにリンクするのではなく、リンク自体に直接動作します。
これは、特に展開スクリプトを実行したり、自動的に生成されたリンクファイルを処理するなど、実際のファイルではなくリンクを操作する場合に、一部のシナリオで非常に便利です。
bool lchown ( string $filename , string|int $user )
$ filename :所有者のシンボリックリンクへのパス。
$ユーザー:新しい所有者。ユーザー名文字列またはユーザーのUIDにすることができます。
リターン値はブール値です:
正常にtrueを返します。
Falseを返すことができませんでした。
シンボリックリンク/var/www/html/link_to_configがあるとしたら、所有者をユーザーデプロイに変更したいと考えています。
<?php
$link = '/var/www/html/link_to_config';
$user = 'deploy';
if (lchown($link, $user)) {
echo "Symbolic Linkの所有者はそれを正常に変更しました";
} else {
echo "変更に失敗しました,権限またはパスが正しいかどうかを確認してください";
}
?>
注: LCHOWN()では、ファイル所有者を正常に変更するために、スクリプトがスーパーユーザー(ルートなど)権限を使用して実行する必要があります。
システムを展開するときにリンクの所有権を自動的に設定します。たとえば、自動展開スクリプトで、シンボリックリンクが特定のユーザーが所有していることを確認します。
許可管理ポリシー:リンクされたファイルの専用所有者を設定して、通常のファイルを区別します。
マルチユーザーシステム:リンク許可がファイルシステム構造に明確に割り当てられていることを確認してください。
オペレーティングシステムの互換性: LCHOWN()は、UNIXのようなシステム(Linux、MacOSなど)でのみ有効です。 Windowsはそれをサポートしていません。
許可制限:ファイル所有者の変更には通常、管理者の権限が必要です。そうしないと、失敗します。
関数の動作制限:関数は、ターゲットファイルをシンボリックリンクで操作するのではなく、リンク自体にのみ動作します。
コマンドラインツールを使用して、リンクの所有者が変更されたかどうかを確認できます。
ls -l /var/www/html | grep link_to_config
またはPHPスクリプトを使用します。
<?php
echo fileowner('/var/www/html/link_to_config');
?>
ユーザー名を取得する必要がある場合は、 POSIX_GETPWUID()と組み合わせて使用できます。
<?php
$uid = fileowner('/var/www/html/link_to_config');
$userinfo = posix_getpwuid($uid);
echo $userinfo['name'];
?>
変更する必要があるのは、リンク自体ではなくリンクが指すターゲットファイルの所有者である場合、 chown()関数を使用します。
chown('/var/www/html/link_to_config', 'deploy');
この呼び出しは、リンク自体ではなく、リンクがポイントする実際のファイル所有者を変更します。