Как удалить файл в Linux с помощью exec - PullRequest
1 голос
/ 13 февраля 2012

Я пытаюсь удалить ранее созданный файл с именем a\.

Я пытался использовать:

1)

rm -rf a\\

2)

rm -rf a\\/

но оба не работают. Я попытался войти в терминал, но я не смог удалить. Я написал a, а затем нажал tab, и он показывает a\\/, но он все еще не работает. Ни от терминала. Я получаю:

 sudo rm -rf a\\/
 rm: cannot remove `a\\': Operation not permitted

Есть предложения?

Ответы [ 3 ]

3 голосов
/ 13 февраля 2012

Я предполагаю, что вы используете Ubuntu из-за sudo?

Сначала убедитесь, что вы находитесь в том же каталоге, что и файл, который вы пытаетесь удалить, сделайте это с:

print(getcwd());

Во-вторых, попробуйте изменить владельца файла, который вы пытаетесь удалить, на www-data (или apache в зависимости от вашего сервера), а затем посмотрите, можете ли вы удалить файл из сценария php.

Если это работает, значит, у вас проблема с разрешением.

Существует несколько способов решения этой проблемы.

  1. Убедитесь, что файлы, которые вы удаляете, принадлежат процессу веб-сервера (наиболее безопасны).
  2. Дайте файлам 777 разрешений, чтобы любой пользователь мог их удалить.
  3. Добавление пользователя веб-сервера в sudoers (/ etc / sudoers) (наименее безопасный)
0 голосов
/ 13 февраля 2012

Вы должны попытаться указать полный путь к файлу, используя /path/to/file или ./a\\. О побеге уже рассказано.

0 голосов
/ 13 февраля 2012

Вы должны использовать exec("rm -rf a\\\\"); в своем php-коде.

Php использует \\ для экранирования \, и система использует то же самое, поэтому вам нужно экранировать \ дважды

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