1

PHPのmkdir関数を使用していますが、$modeパラメーターに問題があります。パラメータを指定しない場合、新しいディレクトリのデフォルトの権限設定としてUNIX755を取得します。パーミッションをUNIX777に設定したいので、次のように設定しました。

$mode = '0700';
mkdir($newdir, $mode);

これを行うとフォルダが作成されますが、何もできません。実際、私はそれを削除することさえできません!私にできることは、FTP経由で名前を変更することだけです...

次に、$ mode='0600'を設定してみました。これにより、実行可能なフォルダーが作成されますが、アクセス許可はUNIX 110に設定されます。これはどのように可能ですか?UNIXの値は600ではないでしょうか。ここで見逃している変換はありますか?ありがとう。

4

3 に答える 3

1

モードは文字列ではなく数値であると想定されています。$mode = 0700;代わりに試してください。

于 2011-06-20T07:01:21.493 に答える
0

php.netの手動によると、mkdir関数には次の説明があります。

bool mkdir ( string $pathname [, int $mode = 0777 [, bool $recursive = false [, resource $context ]]] )

ここでの$modeは整数(文字列ではない)であり、8ベース(10ベースではない)であるため、「0」で開始する必要があります。

更新:(php.netから)モードを8進数として指定する必要があることに注意してください。これは、先行ゼロが必要であることを意味します。モードは現在のumaskによっても変更されます。これは、umask()を使用して変更できます。

于 2011-06-20T07:04:19.540 に答える
0

0777に設定する場合は、次のことを試してください。

oldumask = umask(0);
mkdir('mydir', 0777); 
umask($oldumask);

ディレクトリのアクセス許可はumaskと指定したものの組み合わせであるため、umaskの詳細をお読みください。

于 2011-06-20T07:05:41.270 に答える