2013-04-25 4 views
1

Я пытаюсь создать файл самоуничтожения. Я имею в виду, что если условное значение равно true, файл удаляет себя.Файл, удаляющий себя?

Кажется, что следующий код должен сделать трюк. Однако он ничего не делает. Что я делаю не так?

<?php 
    phpinfo(); 
    // The following should be activated when the url is 
    // selfdestruct.php?delete=1, correct? 
    if ($_GET['delete']==1) { 
     $file = 'selfdestruct.php'; 
     unlink($file); 
    } 
?> 

Спасибо за ваш геп заранее! Я ценю это! :-)

+0

может быть, это не имеющими разрешений на удаление может быть, ваш путь не является правильным? –

ответ

0

Вы проверили файлы своего веб-сервера и php-журнала? Может быть проблема с разрешениями или что веб-сервер сохраняет файл открытым, поэтому его нельзя удалить.

Также попробуйте передать весь локальный путь к файлу до unlink. Вы могли бы, вероятно, использовать Разорвать связь (_FILE_)

Кроме того, является это на Windows, или Linux? Они обрабатывают «открытые» файлы несколько иначе. Я испытал это на Linux, и он прекрасно работает с

unlink(__FILE__); 

Информация об ОС и запуска веб-сервера т.д., вероятно, хорошо, чтобы добавить вопрос такого характера.

+0

Я запускаю Fedora 18 и httpd (что я считаю Apche2?). Я изменил выше, и он не работает ... – ByronArn

+0

Вы проверили, что это не вопрос разрешения? Что говорят файлы журналов? У пользователя httpd есть разрешения на удаление указанного файла? – inquam

+0

Я изменил права доступа к файлам, чтобы каждый мог читать и писать файл. Я также переместил код в начало. Он все еще не удаляет себя. – ByronArn

0

Проверить эти шаги:

  1. Помещенный error_reporting(E_ALL); на первой линии
  2. Проверьте права доступа
  3. Поместите удаления кода выше что-нибудь еще, после того, как "error_reporting"

Вы должны сделать следующие:

if (isset($_GET['delete']) && $_GET['delete'] == '1') { 
    unlink(FILE); 
} 
+0

Это * __ FILE __ *, а не * FILE * ... или * $ file *, если вы берете из своего примера. – inquam

+0

Видимо, редактор stackoverflow.com не позволяет подчеркнуть символ ... На самом деле есть 2 символа подчеркивания до и после ** ФАЙЛ ** – machineaddict

0

я обычно делаю это так: (используя GET)

if ($_GET['delete']==1) { 
    unlink(__FILE__) or die("Please delete this file."); 
    echo "This file has been deleted.<br />"; 
} 

Если файл не может быть удален его выхода не будет показан сценарий и последний отзвук.

А также, ваш код должен работать, быстрый тест, который вы можете сделать, чтобы проверить, если условие выполняется, но только не в состоянии удалить файл является:

if ($_GET['delete']==1) { 
    echo "Works!"; 
} 
+0

Да, странно. Он повторил, что файл был удален, но файл все еще там ... – ByronArn

+0

вы проверили, был ли файл все еще в браузере ftp/file или через браузер? это может быть кешированный файл, если вы получаете доступ через браузер. – Jay

+0

Да, я использовал свой файловый менеджер, чтобы проверить его. Его все еще там, к сожалению. – ByronArn

Смежные вопросы