0

私のコードでは

$path = 'images/product/'.$pid;
if( ! file_exists($path)) {
    mkdir($path, 0777);
}
...
...

しかし、私がタイプするとき

ls -l

ターミナルで

drwxr-xr-x 2 www-data www-data 4.0K 2011-12-10 19:28 1/

これは私が得た許可ですが、私は望んでいません。

実行時に作成された製品 ID (ディレクトリ) に基づいて、Web ユーザーがプロジェクトをアップロードできるようにしたいと考えています。

どうすればそうできますか?

4

2 に答える 2

4

777 パーミッション、または任意のパーミッションを持つディレクトリを作成するため

$path = 'images/product/'.$pid;
if( ! file_exists($path)) {
    $mask=umask(0);
    mkdir($path, 0777);
    umask($mask);
}

...

于 2012-01-06T10:23:39.080 に答える
1

これは、Apache の umask がデフォルトで 0022 に設定されているためです。

umask は許可を取り消すためのものです。例

default 0777 rwx.rwx.rwx 
umask   0022 ---.-w-.-w-
Final   0755 rwx.r-x.r-x

これを解決するには2つの方法があります。

1. Edit /etc/apache2/envvars
   add in **umask** *<permission to be revoke>*
   restart apache
2. add in umask(0000); before the mkdir('mydir', 0777);
于 2011-12-11T03:50:35.130 に答える