Cancellazione File dal Server.

lo script completo è nel post 18
ho dovuto dividere in 18 e 19 perché mi accetta solo 5 png ed io ne avevo 6
 
Sembra diverso da quello iniziale ... che ne dici se proviamo uno script che cancella solo il file più vecchio in una cartella specifica senza fare nessun backup ?
 
non è diverso, ho fatto copia incolla da uno dei post, ho solo scelto quello che ha i return senza null'altro

scusa ho modificato
PHP:
  $directory = "/web/files_jpa"; // <- inserisci path senza barra finale 
  $FileExt = ".jpa"; // <- inserisci l'estensione del file o comunque la parte finale da controllare

e ho aggiunto la parte necessaria a creare url ma non inficia il resto
 
Ultima modifica:
basta eseguire la sola istruzione
PHP:
DeleteOldestFile();



potrebbe essere che i files sono in una cartella sulla quale non hai diritti di cancellazione ?

Se volessi usare solo la funzione di cancellazione (senza Backup) va bene questo codice su un nuovo file PHP ?

<?php

function DeleteOldestFile() {

$directory = "/web/..."; // <- inserisci path senza barra finale
$FileExt = ".jpa"; // <- inserisci l'estensione del file o comunque la parte finale da controllare

if (is_dir($directory))
{
if ($directory_handle = opendir($directory))
{
while (($FileName = readdir($directory_handle)) !== false)
{
$FileRef = $directory."/".$FileName;

if ( !is_dir($FileRef) )
{
$FileCtime = filectime($FileRef);

// echo $FileName."<br />".$FileCtime."<br />";

if ( substr($FileName, -strlen($FileExt)) == $FileExt and ( empty($OldestFile) or $FileCtime < $OldestCtime ) )
{
$OldestFile = $FileRef;
$OldestCtime = $FileCtime;
}
}
}
closedir($directory_handle);

if ( empty($OldestFile) ) return;
else
{
echo $OldestFile."<br />";
// unlink($OldestFile);
return;
}
}
}
}
?>

Ho provato ma non genera nulla neppure errori.
 
devi chiamare la funzione
PHP:
<?php

DeleteOldestFile(); // chiamo la funzione

function DeleteOldestFile() {
....
 
leggendo sulle "Permissions", ben spiegate in
http://linuxcommand.org/lts0070.php

r-x = 101 in binary = 5

secondo me,
la directory ed i files dovrebbero avere permission = "775"
per poter essere cancellati non dal solo "owner"

volendo mettere "777" tutti gli utenti (loggati) possono agire sul file/directory
 
I permessi vanno bene.

Ecco la cosa strana ... se creo un altro file PHP con la sola funzione di cancellazione tutto OK mentre se uso un unico file No.

Con questo script in un unico file appare una schemata bianca senza errori ma se vado a controllare nella cartella il file è cancellato.

<?php

DeleteOldestFile();

function DeleteOldestFile() {

$directory = "/web/..."; // <- inserisci path senza barra finale
$FileExt = ".jpa"; // <- inserisci l'estensione del file o comunque la parte finale da controllare

if (is_dir($directory))
{
if ($directory_handle = opendir($directory))
{
while (($FileName = readdir($directory_handle)) !== false)
{
$FileRef = $directory."/".$FileName;

if ( !is_dir($FileRef) )
{
$FileCtime = filectime($FileRef);

// echo $FileName."<br />".$FileCtime."<br />";

if ( substr($FileName, -strlen($FileExt)) == $FileExt and ( empty($OldestFile) or $FileCtime < $OldestCtime ) )
{
$OldestFile = $FileRef;
$OldestCtime = $FileCtime;
}
}
}
closedir($directory_handle);

if ( empty($OldestFile) ) return;
else
{
// echo $OldestFile."<br />";
unlink($OldestFile);
return;
}
}
}
}
?>
 
Con questo script in un unico file appare una schemata bianca senza errori ma se vado a controllare nella cartella il file è cancellato.
è corretto perché non c'è nessuna istruzione di "output" attiva, anche "echo" è commentato

hai provato a dare i permessi al livello "777" sui files e sulle directories, quella che contiene i files e quelle sopra ?

non ho al momento idea del perché non possano coesistere le due funzioni,
per me sarebbe interessante sapere "chi" e "come" esegue lo script "curl"
 
è corretto perché non c'è nessuna istruzione di "output" attiva, anche "echo" è commentato

hai provato a dare i permessi al livello "777" sui files e sulle directories, quella che contiene i files e quelle sopra ?

non ho al momento idea del perché non possano coesistere le due funzioni,
per me sarebbe interessante sapere "chi" e "come" esegue lo script "curl"

Il sito Web è ospitato su server Aruba mentre lo script Curl credo che lo esegua Akeeba che è il programma in Joomla che mi gestisce i Backup.

Eventualmente per dare un'istruzione di Output, tipo " File Cancellato con Successo ", cosa si dovrebbe inserire/modificare ?
 
Eventualmente per dare un'istruzione di Output, tipo " File Cancellato con Successo ", cosa si dovrebbe inserire/modificare ?

PHP:
<?php

DeleteOldestFile(); 

function DeleteOldestFile()
{ 
  $directory = "/web/files_jpa"; // <- inserisci path senza barra finale 
  $FileExt = ".jpa"; // <- inserisci l'estensione del file o comunque la parte finale da controllare 
  $OldestFile = "";

  if (is_dir($directory)) 
  {  
    if ($directory_handle = opendir($directory)) 
    {  
      while (($FileName = readdir($directory_handle)) !== false) 
      {  
        $FileRef = $directory."/".$FileName; 

        if ( !is_dir($FileRef) ) 
        {  
          $FileCtime = filectime($FileRef); 

          // echo $FileName."<br />".$FileCtime."<br />"; 

          if ( substr($FileName, -strlen($FileExt)) == $FileExt and ( empty($OldestFile) or $FileCtime < $OldestCtime ) ) 
          {  
            $OldestFile  = $FileRef; 
            $OldestCtime = $FileCtime; 
          } 
        }
      } 
      closedir($directory_handle); 

      if ( empty($OldestFile) ) echo $directory."/*".$FileExt." NON TROVATO" ; 
      else                      echo $OldestFile . ( unlink($OldestFile)  ? " cancellato" : " NON CANCELLATO" );
      echo "<br /> <br />"; 
    } 
  } 
} 
?>
 
leggendo sul sito di akeeba, nel supporto, trovo questo post,
https://www.akeebabackup.com/suppor...-remove-delete-files-older-than-x.html#p49564
l'esperto risponde,
The internal backups can be deleted based on total size of the backups or number of backup files
sembra quindi che akeeba sia in grado di cancellare autonomamente i files quando questi superano un certo numero
riducendo lo scritto al necessario,
internal backups can be deleted based on number of backup files
forse non serve un processo esterno ma una verifica della configurazione, con il manuale alla mano

probabilmente, in qualche modo akeeba tiene traccia dei file di backup, cancellandoli al di fuori del processo di backup,
potrebbe "aversene a male"


da un altro post della serie ....
Enable remote quotas, enable count quotas and set the Count Quotas option to 30. Quick and easy
 
Ultima modifica:
leggendo sul sito di akeeba, nel supporto, trovo questo post,
https://www.akeebabackup.com/suppor...-remove-delete-files-older-than-x.html#p49564
l'esperto risponde,

sembra quindi che akeeba sia in grado di cancellare autonomamente i files quando questi superano un certo numero
riducendo lo scritto al necessario,

forse non serve un processo esterno ma una verifica della configurazione, con il manuale alla mano

probabilmente, in qualche modo akeeba tiene traccia dei file di backup, cancellandoli al di fuori del processo di backup,
potrebbe "aversene a male"


da un altro post della serie ....

Nella versione free di Akeeba non c'è traccia di queste configurazioni che cancellerebbero i Backup più vecchi.
 
Nella versione free di Akeeba non c'è traccia di queste configurazioni che cancellerebbero i Backup più vecchi.

nella pagina,
https://www.akeebabackup.com/products/46-software/405-akeeba-core-vs-professional.html

le caratteristiche di "the free of charge Akeeba Backup Core and the subscription-only Akeeba Backup Professional", sono indicate rispettivamente nella prima e seconda colonna,
Cattura.PNG
 

Discussioni simili