Buonasera Fermat e Hormus.
grazie per le Vs risposte. Per quanto riguarda lo script e i doppi apici penso che sia una cosa dovuta al fatto che lo script copi i dati da un server di rete A e lo depositi su server di rete B con indirizzi diversi mentre lo script viene eseguito si sul server B ma da una client con indirizzo C diverso da A e B.
Per spiegarla in maniera semplice il sistema serve a preparare i pacchetti zip con all'interno i tutti i documenti della commessa e li rende disponibili al download su un server a cui hanno accesso anche esterni. Il ns scopo è quello di rendere disponibile solo i documenti strettamente necessari. Questa è solo una delle routine che compongono lo script in se. Nel caso posterò anche il resto del codice che per ora è in fase molto embrionale e che coinvolge anche mysql e autocad.
lo script che sto modificando ( che copia tuta la directory) l'ho trovato su internet. Il blocco avviente quando commento quanto segue:
$files = array();
while (false !== ($file = readdir($dir)))
{
if ($file == "." || $file == "..")
continue;
$files[] = $file;
}
foreach ($files as $file)
{
echo "Copying file: $file\n";
if (!$remote = @fopen("ssh2.sftp://{$stream}/{$remoteDir}{$file}", 'r'))
{
echo "Unable to open remote file: $file\n";
continue;
}
if (!$local = @fopen($localDir . $file, 'w'))
{
echo "Unable to create local file: $file\n";
continue;
}
$read = 0;
$filesize = filesize("ssh2.sftp://{$stream}/{$remoteDir}{$file}");
while ($read < $filesize && ($buffer = fread($remote, $filesize - $read)))
{
$read += strlen($buffer);
if (fwrite($local, $buffer) === FALSE)
{
echo "Unable to write to local file: $file\n";
break;
}
}
fclose($local);
fclose($remote);
}
La versione qui sopra copia perfettamente tutta la directory dal server A al server B
Quando apporto queste modifiche qui sotto
$file=[variabile passata dal db contenente il nome del file da scaricare copreso di estensione];
//$files = array();
//while (false !== ($file = readdir($dir)))
//{
// if ($file == "." || $file == "..")
// continue;
// $files[] = $file;
//}
//foreach ($files as $file)
//{
echo "Copying file: $file\n";
if (!$remote = @fopen("ssh2.sftp://{$stream}/{$remoteDir}{$file}", 'r'))
{
echo "Unable to open remote file: $file\n";
continue;
}
if (!$local = @fopen($localDir . $file, 'w'))
{
echo "Unable to create local file: $file\n";
continue;
}
$read = 0;
$filesize = filesize("ssh2.sftp://{$stream}/{$remoteDir}{$file}");
while ($read < $filesize && ($buffer = fread($remote, $filesize - $read)))
{
$read += strlen($buffer);
if (fwrite($local, $buffer) === FALSE)
{
echo "Unable to write to local file: $file\n";
break;
}
}
fclose($local);
fclose($remote);
//}
Lo script dovrebbe funzionare correttamente ( ho semplicemente escluso il ciclo foreach, e passo come $file un paramentro ben preciso preso dal DB)
la pagina si blocca e mi da errore 500
Non riesco a capire dove stia l'errore
Grazie in anticipo per il VS aiuto