1

以下のコードを実行して、CHMOD と CHOWN の値を以下に示します。しかし、何らかの理由で is_writable が失敗し続けます。

if (!is_writeable($this->path)) {
  echo 'Current script owner: ' . get_current_user();
  echo '<br />';
  echo $this->path;
  echo '<br />';
  print_r(posix_getpwuid(fileowner($this->path)));
}

ディレクトリの CHMOD 値は 775 で、所有者は User1 です。上記からの出力は

Current script owner: User1 
path/to/directory  
Array ( [name] => User1 [passwd] => x [uid] => 111 [gid] => 111 [gecos] => [dir] =>
/path/to/user [shell] => /bin/false )

一致しない唯一のことは、ファイルの所有者/グループが 111/1 であるため、グループは異なる可能性がありますが、所有者は同一です。is_writeable が失敗するのはなぜですか?

4

1 に答える 1

1

あなたは所有者ですか、それともウェブサーバーですか?

Web サーバーで実行するものはすべて、、wwwまたは_www(www-data構成に応じて、異なる OS のデフォルト値) として実行する必要があります。そのため、Web サーバーのユーザーはあなたのグループに属していないため、Web サーバーはファイルに書き込みできません。

(Ps:get_current_user()はスクリプトの所有者 (例: chown で設定したもの) であり、スクリプトを実行しているユーザーではありません。現在のスクリプトを実行しているユーザー データ: var_dump(posix_getpwuid(posix_getuid()));)

于 2013-04-24T17:03:29.070 に答える