Почему я получаю “разрешение, отклоненное” в PHP при попытке переименовать каталог?

Согласно заголовку вашего вопроса, если вы хотите выйти из цикла, используйте break; и если вы хотите выйти из метода, используйте return;

выйти из цикла ex:

[ 110]

выйти из метода, например:

public void someMethod() {
    //your code
   if (someCondition()) {
        return;
    }
}
5
задан Andrew Hedges 12 October 2008 в 21:20
поделиться

5 ответов

Вы редактируете высокоуровневый каталог, таким образом, у пользователя PHP должен быть доступ для записи к тому каталогу.

11
ответ дан 18 December 2019 в 12:03
поделиться

Это, вероятно, потому что апач не является владельцем родительского каталога. При переименовании (или перемещении) файл является в основном тем же самым как созданием нового файла.

2
ответ дан 18 December 2019 в 12:03
поделиться

для разъяснения php может только переименовать каталоги, он имеет фактическое владение:

-rwxrwxrwx user   user   temp/
-rwxr-xr-x apache apache temp2/
-rw-r--r-- user   user   script.php

предположите, что script.php пытается переименовать эти два каталога:

// this operation fails as PHP (running as apache) does not own "temp",
// despite having write permissions    
rename('temp', 'temp.bak');

// this operation is successful as PHP owns "temp2"
rename('temp2, 'temp.bak'); 
2
ответ дан 18 December 2019 в 12:03
поделиться

Попытайтесь запустить следующий скрипт:

print_r(posix_getpwuid(getmyuid()));
print_r(pathinfo($YOUR_PATH));

И посмотрите то, что это возвращает.

0
ответ дан 18 December 2019 в 12:03
поделиться

Другая вещь, которая могла бы помочь этим видам ситуаций, состоит в том, чтобы попытаться на самом деле понизить полномочия. Я видел случаи, где апач отклоняет разрешение приложения сделать что-то, потому что его полномочия установлены слишком высоко. Мое предположение - то, что это должно поощрить хорошую практику безопасности.

0
ответ дан 18 December 2019 в 12:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: