stat () и оператор амперсанда - PullRequest
3 голосов
/ 09 января 2010

Я изучал исходный код WordPress, который работает в файловой системе, когда я попал в эти несколько строк, и я действительно не совсем уверен, что они делают?

$stat = stat( dirname( $new_file ));
$perms = $stat['mode'] & 0000666;
@ chmod( $new_file, $perms );

Ответы [ 3 ]

3 голосов
/ 09 января 2010

Этот код использует побитовые операции, чтобы гарантировать, что права доступа к файлу не превышают 666. Чтобы сломать это:

// Retrieves the file details, including current file permissions.
$stat = stat( dirname( $new_file )); 

// The file permissions are and-ed with the octal value 0000666 to make
// sure that the file mode is no higher than 666. In other words, it locks
// the file down, making sure that current permissions are no higher than 666,
// or owner, group and world read/write.
$perms = $stat['mode'] & 0000666; 

// Finally, the new permissions are set back on the file
@chmod( $new_file, $perms );
1 голос
/ 09 января 2010

Это меняет разрешение на запись в директорию .. Я думаю. Проверьте stat () и chmod () .

0 голосов
/ 09 января 2010

0666 является восьмеричной нотацией для разрешений unix rwxrwxrwx, поэтому я предполагаю, что $stat['mode'] возвращает разрешения для папки. Затем они получают побитовое И с маской 0666, чтобы проверить, есть ли у вас как минимум разрешения на чтение / запись / выполнение для себя, группы и других.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...