[PHP/IIS] Modderen met textfiles op een W2K bak

Pagina: 1
Acties:

Onderwerpen


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 20-09 16:45
Op m'n intranet-server wil ik de inhoud van een logfile vanaf één van mijn servers weergeven.

Dit gaat via ajax(of eigenlijk gewoon via een javascript http request, want van XML is in dit geval geen sprake), dus op m'n intranet pagina heb ik een
HTML:
1
2
<div id=logging>
<div>

En vanuit een javascript wordt een http-request gedaan naar een pagina op m'n intranet
JavaScript:
1
http_request.open('GET', 'backup.php?logfile=200', true); 

Die backup.php plukt pad+filename uit m'n SQL server en vraagt dan aan de IIS op de betreffende fileserver om die file:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ($_GET['action']=='getbackuplog')
{
        $sql="select server, logfile from tblBackupLog where id=".$_GET['id'];
    $myrs=$db->exec($sql);
    $content='';
    if ($myrow=$db->fetch_array($myrs))
    {
        $filename='http://'.$myrow['server'].'/backend/masbackend.php?action=getbackuplog&file='.base64_encode($myrow['logfile']);
        if($handle=fopen($filename,'b'))
        {
            fpassthru($handle);
            die();
        }
    }
}

En op de fileserver wordt die file opgepakt:
PHP:
1
2
3
4
5
6
7
8
9
$content='';
$filename=base64_decode($_GET['file']);
if (file_exists($filename))
{
    $handle=fopen($filename,'r');
    fpassthru($handle);
    die();
    fclose($handle);    
}

Dit werkt, maar ik zou graag ergens onderweg iets van
PHP:
1
$content=nl2br($content);

Doen. En dat gaat niet, want win2k doet één of andere niet-ascii encoding. Ik heb 't nu werkend door in javascript
JavaScript:
1
content=content.replace(/\n/g,'<br />');

te doen, maar dat wil ik eigenlijk server-side doen. Maar het lukt mij dus niet om die textfiles (overigens logfiles van NTBackup) regel voor regel te lezen en daar <br /> tussen prutsen, bijvoorbeeld door:
PHP:
1
2
3
4
while(!feof($handle))
{
    $content.=fgets($handle,4000).'<br /r>';
}

, want dan krijg ik allemaal japanse zooi ineens:
Afbeeldingslocatie: http://www.iks-hosting.nl/images/japansklein.jpg
Wanneer ik diezelfde pagina direct van de webserver van die fileserver opvraag, gaat 't wel goed.

Was advocaat maar vindt het juridische nog steeds leuk


  • MTWZZ
  • Registratie: Mei 2000
  • Laatst online: 13-08-2021

MTWZZ

One life, live it!

Controleer even de encodings op alle plekken waar je wat met de inhoud van dat log bestand werkt (server en client). Windows werkt met unicode en php doet dat geloof ik niet standaard.

Waarschijnlijk heb je wel wat aan utf8_decode

[ Voor 23% gewijzigd door MTWZZ op 14-12-2006 15:04 ]

Nu met Land Rover Series 3 en Defender 90


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 20-09 16:45
MTWZZ schreef op donderdag 14 december 2006 @ 15:03:
Controleer even de encodings op alle plekken waar je wat met de inhoud van dat log bestand werkt (server en client). Windows werkt met unicode en php doet dat geloof ik niet standaard.

Waarschijnlijk heb je wel wat aan utf8_decode
Nee, dat hielp niet echt, maar verder zoekend kwam ik erachter dat de file UTF-16LE encoded is.

Door de hele file uit te lezen en daarna een
PHP:
1
$content=mb_convert_encoding($content, 'UTF8', 'UTF-16LE');

Maakt 'ie er een gewoon leesbare UTF8 van, waarmee ik gewoon uit de voeten kan.

Was advocaat maar vindt het juridische nog steeds leuk