Цикл while для добавления 1 к имени файла, если он уже существует, не работает в PHP - PullRequest
3 голосов
/ 26 января 2012

Я пытаюсь создать небольшой фрагмент кода, чтобы сначала проверить содержимое каталога, чтобы увидеть, существует ли файл и, если он существует, добавить число к имени файла. К сожалению, я не могу заставить его работать в данный момент, php не выдает ошибок, но новый файл не создается, если он уже существует. Вот мой код атм:

$Scan_Name_Output =  "dirbuster_" . $workload["Scan_Name"] . "_output.txt"; 
$Check_Output = exec("ls " . $Output_Directory . " | grep -w " . $Scan_Name_Output);
$j = 1;

while (!empty($Check_Output))
{
    $Scan_Name_Output = $Scan_Name_Output . $j;
    $j++;

Если я заменим цикл while на оператор if, он сработает, поэтому проблема не связана с путями к файлам или чем-либо еще. Я попробовал несколько комбинаций, но не могу заставить его работать.

Я пытался использовать file_exists (), но он не работает - я думаю, это потому, что я передаю переменные, которые были помещены через escapeshellarg (). В результате я думаю, что file_exists буквально ищет /path/to/dir/'Report1.txt '- очевидно, что' Report1.txt 'не существует, Report1.txt делает. Вот почему я использовал exec и ls.

Спасибо за любые ответы

Ответы [ 2 ]

3 голосов
/ 26 января 2012

PHP имеет несколько хороших функций, встроенных для обработки файлов.Вам следует подумать об использовании file_exists(), например.

$basename =  "dirbuster_" . $workload["Scan_Name"] . "_output.txt";          
$Scan_Name_Output = $basename;
$j = 1;
while (file_exists($Scan_Name_Output)){
    $Scan_Name_Output = $basename . $j;
    $j++;
}
$ourFileHandle = fopen($Scan_Name_Output, 'w') or die("can't open file");
2 голосов
/ 26 января 2012

Попробуйте это:

$Scan_Name_Output =  "dirbuster_" . $workload["Scan_Name"] . "_output.txt";
if (file_exists($Scan_Name_Output))
{
    rename($Scan_Name_Output, $Scan_Name_Output . "1");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...