bernhard frank’s blog

[bi:frængk] - freimütiges über webhosting auf windows

 

  • Bernhard Frank's Blog

    How to install Orca.exe from the Windows Installer Development Tools

    • 0 Comments

    The tool Orca.exe is a database editor of windows installer files (*.msi). You can create and edit .msi files and merge modules:Loaded *.msi file with orca.exe - display of windows installer database

    The tool is helpful if you need some more insight into *.msi files – however orca.exe is a bit tricky to find – Here is my way:

    1. download the Microsoft Windows SDK for Windows 7 and .NET Framework 3.5 SP1 (ISO)Windows 7 SDK 
    2. opened Iso file (or burn on DVD and insert disk)
    3. navigate to folder \Setup\WinSDKTools
    4. open cab1.cab
    5. Right click WinSDK_Orca_Msi_5E20C107_DAA3_4D49_AFAE_7FB2594F0CDC_x86 –> Extract to a folder of your choice –> add .msi to the file name –> install

    Once installed – when you right click a *.msi file you get the context menu Edit with Orca  orca.exe - edit with orca context menu

  • Bernhard Frank's Blog

    HTTP Error 401.1 – Unauthorized bei Verwendung von Windows Authentication

    • 0 Comments

    Kurz und knackig:

    Windows Authentication + Host Name = http 401 error

    if (host name != computername && server != Domain Member)

    Lösung: Host Name in Registry Eintragen -> MS KB Article 896861 - Detais s.u.

     

    Scenario:

    Webserver IIS7.x – keine Domäne – Server ist Bestandteil einer Workgroup.

    Website -> Authentication -> Windows Authentication enabled

    Authorization Rule „allow all“ entfernt und Allow Eintrag für Specific user „Administrator“ gemacht. (Alternativ: Website -> Authentication -> Anonymous Authentication deaktivieren)

     

    Problem:

    Beim Browsen auf die Seite bekomme ich ein Passwort Prompt (ok.) Nach Eingabe von Benutzername und Passwort werde ich noch 2mal aufgefordert Username und Passwort (böse) einzugeben – letztendlich schlägt der Zugriff fehl und das obwohl der user (in meinem Fall administrator) 100%ig Zugriff haben sollte.

    browser password prompt leads to access denied 401.1

     

    HTTP Error 401.1 – Unauthorized

    You do not have permission to view this directory or page using the credentials that you supplied. Detailed Error Information

    Module WindowsAuthenticationModule

    Notification AuthenticateRequest

    Handler PageHandlerFactory-Integrated

    Error Code 0xc000006d

     

    Logon Method Not yet determined

    Logon User Not yet determined

     

    Eventlog zeigt Audit Failure bei Logon mit Status 0xc000006d:

    Eventlog showing Audit Logon Failure

    An account failed to log on.

     

    Subject:

           Security ID:        NULL SID

           Account Name:       -

           Account Domain:            -

           Logon ID:           0x0

     

    Logon Type:                3

     

    Account For Which Logon Failed:

           Security ID:        NULL SID

           Account Name:       administrator

           Account Domain:            TEST-UXANGUNQ4J

     

    Failure Information:

           Failure Reason:            An Error occured during Logon.

           Status:                    0xc000006d

           Sub Status:         0x0

     

    Process Information:

           Caller Process ID:  0x0

           Caller Process Name:       -

     

    Network Information:

           Workstation Name:   TEST-UXANGUNQ4J

           Source Network Address:    127.0.0.1

           Source Port:        58948

     

    Detailed Authentication Information:

           Logon Process:            

           Authentication Package:    NTLM

           Transited Services: -

           Package Name (NTLM only):  -

           Key Length:         0

     

    Ursachenforschung:

    Meine Website im IIS hat einen „Host Name“ in den „Bindings“ eingetragen – werf ich den raus und browse auf die Website mit dem Netbios Namen funktioniert es wie gewünscht.

    MS KB Article 896861: “…a… security feature … prevent reflection attacks on your computer. … authentication fails if … the custom host header … does not match the local computer name.

     

    Lösung:

    In  obigen zitierten KB Artikel: “You receive error 401.1 when you browse a Web site that uses Integrated Authentication and is hosted on IIS 5.1 or a later version”

    Bei “Method2:” -> Starten mit ”2. Click Start, click Run, type regedit, and then click OK.”

    Nur die Einträge für BackConnectionHostNames machen:

    BackConnectionHostNames in regedit

     

    Iisreset.exe ausführen und danach funktioniert der Zugriff.

  • Bernhard Frank's Blog

    Codeplex saving release details problem: "There were errors saving the item."

    • 0 Comments

    I ran inot the error when saving the release details of my project hosted at codeplex.

    I hit the save button and got the error:
    "There were errors saving the item." or "Invalid date value"

    workaround: change your browser's language preferences to en-US only:

     refresh codeplex site and save using the US date format.

  • Bernhard Frank's Blog

    Netzwerk langsam nach Installation von Hyper-V.

    • 2 Comments

    Szenario:

    Fujitsu Siemens Celsius H240 mit „Marvell Yukon 88E8055 PCI-E Gigabit Ethernet Controller“

    Windows Server 2008 R2 Standard (64Bit)

    Vor Hyper-V Installation – Netzwerk OK (100MBit) – Remote Desktop auf die Maschine kein Problem.

     

    Problem: 

    Nach Hyper-V Installation -> traffic via Virtual Network Adapter -> Remote Desktop auf die Maschine kaum verwendbar + sonstiges Netzwerk langsam.

     

    Abhilfe:

    TCP offloading abschalten:

    "Large Send Offload Version 2 (IPv4)" on the virtual switch -> disabled

    "Large Send Offload (IPv4)" physical adapter -> disabled

     

    Dank  Very slow network performance with Intel NIC when TCP Large Send Offload is enabled !

  • Bernhard Frank's Blog

    Freeware: DoBlogPing – Blog Ping Werkzeug auf Codeplex veröffentlicht.

    • 0 Comments

    DoBlogPing ist für Blogger die Ping Server über neue Einträge auf den eigenen Blog unterrichten wollen - wichtig auch damit Posts schneller bei Suchmaschinen gefunden werden. DoBlogPing setzt einen XML-RPC Aufruf zur Methode weblogUpdates.ping ab. Der Aufruf ist ein einfacher HTTP Post mit XML an die RPC URL des Ping Servers.

    Die meisten Blog-Web-Applikationen verfügen über einen eigenen BlogPing Mechanismus und erledigen den BlogPing automatisch für den Blogger. Warum habe ich trotzdem diese APP geschrieben?

    Ich wollte:

    • selbst bestimmen welche Server ich pinge.
    • sehen was die Ping Server antworten und ob die überhaupt noch da sind.
    • nicht die Blog-Website beeinträchtigen bzw. langsam machen.

    DoBlogPing ist Open Source und liegt auf http://doblogping.codeplex.com.

  • Bernhard Frank's Blog

    Logparser: Chart-Unterstützung kontrollieren und installieren.

    • 0 Comments

    Wie finde ich heraus ob ich Charts mit Logparser darstellen kann?

    logparser  -h -o:chart

     

    Chartunterstützung fehlt:

    Error creating output format "chart": This output format requires a licensed Microsoft Office Chart Web Component to be installed on the local machine

    Um das Problem zu beheben muss man noch die Office Web Components 11 installieren – anschließend sollte man noch auf das Microsoft Office 2003 Web Components Service Pack 1 updaten.

     

    Chartunterstützung installiert:

    Output format: CHART (Chart Output Format)

    Writes output to a chart image file

     

    INTO syntax:

     

     <filename>

     Chart output image filename

     

    Parameters:

     

     -chartType         <chart type>       : Chart type; one of: Line,

                                             LineMarkers, LineStacked,

                                             LineStackedMarkers, LineStacked100,

                                             LineStacked100Markers, Line3D,

                                             LineOverlapped3D, LineStacked3D,

                                             LineStacked1003D, SmoothLine,

                                             SmoothLineMarkers, SmoothLineStacked

                                             , SmoothLineStackedMarkers,

                                             SmoothLineStacked100, SmoothLineStac

                                             ked100Markers, BarClustered,

                                             BarStacked, BarStacked100, Bar3D,

                                             BarClustered3D, BarStacked3D,

                                             BarStacked1003D, ColumnClustered,

                                             ColumnStacked, ColumnStacked100,

                                             Column3D, ColumnClustered3D,

    .

    .

    .

  • Bernhard Frank's Blog

    Logparser: Kostenloses (Web-) Statistik und Analyse Werkzeug

    • 0 Comments

    Log Parser ist ein vielseitiges Werkzeug mit dem Abfragen auf Text-basierte Daten wie Log-Dateien, XML-Dateien und CSV-Dateien, sowie andere Windows Informationsquellen (Event-Log, der Registry, das Dateisystem und Active Directory) möglich sind.

    Die Abfragen werden in einer SQL-Ähnlichen Syntax durchgeführt:

    logparser -i:csv "select PLZ,Ort from http://blogs.technet.com/bernhard_frank/attachment/3306657.ashx where Ort like 'Regensbu%'

     

    PLZ   Ort

    ----- ----------

    93049 Regensburg

     

    Statistics:

    -----------

    Elements processed: 4

    Elements output:    1

    Execution time:     0.65 seconds

    (in obiger Logparser Beispiel Abfrage wird die Postleitzahl von Orten mit den Anfangsbuchstaben "Regensbu" in einer auf einem Webserver geparkten CSV Datei durchgeführt)

     

    Logparser ist kostenlos und kann vom Microsoft Download Center heruntergeladen werden. Das Werkzeug ist schnell auch im Umgang mit großen Dateien – schließlich verwenden auch die Web-Operations Kollegen dieses Tool zum Auswerten ihrer Serverlogs. Die Ausgabe kann als Text oder Grafik, durch eine Schablone geparst oder in eine Datenbank erfolgen:

    Die Anwendungsbeispiele sind vielfältig und die Kreativität des Anwenders ist gefragt:

    Beispiel: Berechnung der Summe der Spritkosten/Monat aus der vom Online-Konto heruntergeladenen Umsatz – CSV Datei (Anm.: zuvor etwaige ',' zu '. ' und '; ' zu ',' im CSV umwandeln).

    logparser "select Quantize(To_Date(To_Timestamp(Valutadatum,'dd.MM.yy')),2592000) as [Month],Mul(Sum(To_REAL(Betrag)),-1) as [Sum] into c:\temp\benzinkosten.jpg from c:\downloads\kontoumsatz.csv where [Begünstigter/Zahlungspflichtiger] like '%Tank%' or [Begünstigter/Zahlungspflichtiger] like '%Station%' group by [Month] order by [Month]" -o:chart -charttype:ColumnClustered -view:on -charttitle:"Spritkosten(€)/Monat" -oTsFormat:"MMM yyyy" -values:on

     

     

    Das deale Tool große (CSV-) Dateien (Excel) nach einen oder mehreren Werten zu suchen zu kombinieren und diese zu auszugeben bzw. zu exportieren.

    Klar, dass Logparser auch bei der Logdatei-Analyse eines Webservers sehr zu empfehlen ist, um z.B: an Informationen wie „Was ist das verwendete Betriebssystem“, Anzahl der Besucher, Stoßzeiten, Datendurchsatz, Meist gesehene Seiten und http-Fehler zu kommen.

     

    Vorraussetzungen:

    Logparser: Download bei www.microsoft.com/downloads -> Suche nach „logparser“

    Für Grafik-Ausgabe: noch die Office Web Components 11 + Microsoft Office 2003 Web Components Service Pack 1 installieren (ebenfalls kostenlos bei www.microsoft.com/downloads )

     

    Weitere Infos unter www.logparser.com oder hier auf dem Blog

  • Bernhard Frank's Blog

    Prozess unter "Run as administrator" von der Powershell aus starten.

    • 0 Comments

    Um unter Windows 7 (oder Vista) einen Prozess mit Administrator Privilegien zu starten reicht ein Rechter Mausklick und ein anschließendes „Run as administrator“:

     

    Um das Ganze von der Powershell aus zu machen genügt:

    start-process -Verb "runas" notepad

    Anschließend nur noch das etwaige UAC Prompt quittieren.

  • Bernhard Frank's Blog

    Logparser Web-Statistik (Beispiel): Besucher Betriebssystem aus Logdatei ermitteln.

    • 0 Comments

    Welches Betriebssystem nutzt der Webseiten Besucher?

    Die Information über das Betriebssystem wird meist vom Browser an den besuchten Webserver im http Header im sog. User-Agent String übergeben. Standardmäßig werden diese Informationen auch vom Webserver mit geloggt. Die Strings sehen so oder ähnlich aus:

    Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+6.1;+Trident/4.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.5.30729;+.NET+CLR+3.0.30729;+Media+Cen…

     

    Da es viele denkbare Kombinationen von OS (+Version), Browser-Software(+Version) sehen diese Strings mitunter sehr unterschiedlich aus. Meist steht die Betriebssysteminformation an derselben Stelle, d.h. man kommt mit folgendem Logparser Beispiel (String-Funktionen) den Betriebsystem auf die Spur:

    logparser -i:w3c "Select distinct TRIM(REPLACE_CHR(EXTRACT_TOKEN(cs(User-Agent), 2, ';' ), '+', ' ' )) as [OS],count(*) as [Count] into c:\temp\logfiles\os.csv from c:\temp\logfiles\combined.log group by [OS] order by [Count] DESC" -o:CSV

     

    Obiges Logparser Beispiel erzeugt eine CSV-Datei aus einem W3C Webserver Log welche das OS und die Anzahl der http-Anfragen enthält:

    OS,Count

    Windows NT 6.1,250789

    Windows 98),1063

    Linux i686,403

     

    Darüber wird nochmals eine Query gefahren welche über die CASE Funktion die Vielzahl der möglichen Betriebssystem Strings noch weiter kategorisiert und über die Kategorien einen Summe bildet:

    logparser "Select CASE SUBSTR( [OS],0, 10) when 'Windows NT' then 'Windows' when 'Intel Mac ' then 'Mac' when 'Linux x86_' then 'Linux' when 'Linux i686' then 'Linux' else 'other' end as [OSS],Sum([Count]) As[SUM] from  c:\temp\logfiles\os.csv group by [OSS] order by [SUM] DESC"

     

    Ergebnis:

    System  SUM    Percent

    ------- ------ ---------

    Windows 500475 96.624443

    other   14596  2.817984

    Mac     2352   0.454090

    Linux   536    0.103483

  • Bernhard Frank's Blog

    QDIG Photo Gallerie Fehler: PHP Notice: Undefined variable: HTTP_GET_VARS

    • 0 Comments

    Szenario:

    PHP 5.2.x auf IIS mit FastCGI. Anschließend die QDIG Dateien in einen Webordner entpackt. Bildordner angelegt. Seite im IE aufgerufen -> Fehler:

    ...

    PHP Notice: Undefined variable: HTTP_GET_VARS in C:\inetpub\qdig3\index.php on line 578 PHP Notice: Undefined variable: HTTP_POST_VARS in C:\inetpub\qdig3\index.php on line 579 PHP Notice: Undefined variable: HTTP_COOKIE_VARS in C:\inetpub\qdig3\index.php on line 580 PHP Warning: array_merge() [function.array-merge]:

    ...

     

    Lösung:

    In der php.ini folgenden Eintrag gesetzt:

     

    register_long_arrays = On

    und den IIS durchgestartet von der Commandozeile mit iisreset

     

    Anmerkung:

    testscript.php:

    <?php

    echo($HTTP_GET_VARS);

    ?>

    Muss ohne Fehler laufen.

  • Bernhard Frank's Blog

    Logparser Web-Statistik (Beispiele): Verweildauer von Clients auf Web Server abschätzen.

    • 0 Comments

    Das Ergebnis wird mit 2 Logparser Beispiel Abfragen oder Schritten durchgeführt:

    1. Erzeugen einer Datei mit Einträgen welche die IP Adresse (c-ip) und die Verweildauer (am Tag) in 10 Sekundenblöcken ablegt.
    2. Summe der IP Adressen mit entsprechender gleicher Verweildauer (über die zuvor erzeugte Datei).

    zu 1.)

    logparser -i:W3C "select c-ip,QUANTIZE(Sub(TO_TIMESTAMP( date, MAX(time) ),TO_TIMESTAMP( date, MIN(time) )),10) As [verweildauer] INTO c:\temp\logfiles\verweildauer.csv from c:\temp\logfiles\combined.log group by date,c-ip order by [verweildauer] DESC"

    erzeugt CSV Datei mit Werten wie z.B.:

    c-ip,verweildauer

    192.168.68.67,0000-01-01 00:02:40

    192.168.68.11,0000-01-01 00:02:40

    192.168.68.37,0000-01-01 00:02:40

    zu 2.)

    logparser "select top 20 to_TIME(verweildauer),count(c-ip) as [Anzahl] into c:\temp\logfiles\verweildauer.jpg from c:\temp\logfiles\verweildauer.csv group by verweildauer order by [Anzahl] DESC" -o:CHART -chartType:BarClustered -chartTitle:"TOP 20 Verweildauer" -values:OFF -groupSize:1024x768 -view:ON

  • Bernhard Frank's Blog

    Logparser Web-Statistik (Beispiele): Prozentuale Verteilung von http Anfragen in DNS Round Robin System ermitteln.

    • 0 Comments

    Bei dem System handelt es um 6 Webserver bei denen per DNS round robin eine Lastverteilung erreicht werden soll. Um die Güte / Verhalten der Lastverteilung zu überprüfen wurden die Logdateien der einzelnen Server zusammengeführt (auch mittels logparser) und eine Abfrage über die gesamte Logdatei gefahren.

    Folgende Logparser Beispiel Abfrage verwendet die PROPCOUNT Funktion um die Prozent-Werte zu berechnen - das Ganze wird dann noch auf 2 Nachkommastellen gerundet und als Tortengrafik dargestellt:

    LogParser.exe -i:W3C "select s-ip,DIV(ROUND(MUL(PROPCOUNT(*), 10000.0)),100) AS Percent into c:\temp\lb.jpg from c:\temp\combined.log group by s-ip order by Percent DESC" -chartType:PieExploded3D -chartTitle:"Loadbalancing (% of Requests)" -view:ON -filetype:jpg -values:on -categories:off

  • Bernhard Frank's Blog

    Logparser Web-Statistik (Beispiele): Vom Webserver ausgelieferte Datenmenge (MBit/min oder MBit/s) ermitteln.

    • 0 Comments

    Folgende Logparser Beispiel Abfrage summiert die Werte des sc-bytes Feldes aus der Logdatei in Minutenblöcke 'Quantize(time,60)' rechnet die erhaltene Summe in MBit um rundet ein bisschen und stellt das Ganze als Liniendiagramm dar. Da die Berechnung je nach Logdatei möglicherweise etwas länger dauert kann man den Zeitraum noch etwas eingrenzen:

    logparser -i:W3C "SELECT TO_TIMESTAMP(date,QUANTIZE(time, 60)) as [Time],DIV(To_REAL(SUM(sc-bytes)),1024000) As [MBit/min] into c:\temp\MBitperMin.jpg from C:\temp\logfiles\combined.log where date between TIMESTAMP('2009-12-10','yyyy-MM-dd') AND TIMESTAMP('2009-12-11','yyyy-MM-dd') group by s-ip,QUANTIZE(time, 60),date " -o:CHART -chartType:Line -values:OFF -groupSize:1024x768 -view:ON

     

    Hintergrund: Kurz vor dem Peak wurde ein Link zu einem Video an tausende Clients versandt.Sehen wir uns den Peak Zeitraum etwas genauer an:

    logparser -i:W3C "SELECT TO_TIMESTAMP(date,QUANTIZE(time, 1)) as [Time],DIV(To_REAL(SUM(sc-bytes)),1024000) As [MBit/sec] into c:\temp\MBitperSec.jpg from C:\temp\logfiles\combined.log where time between TIMESTAMP('09:00:00','hh:mm:ss') AND TIMESTAMP('10:00:00','hh:mm:ss') and date = TIMESTAMP('2009-12-11','yyyy-MM-dd') group by s-ip,QUANTIZE(time, 1),date" -o:CHART -values:OFF -groupSize:1024x768 -view:ON -oTsFormat:'hh:mm:ss' -charttype:Line

    Prinzipiell diegleiche Abfrage, nur wurde hier mit -oTSFormat:'hh:mm:ss' die Zeitangaben auf der x-Achse sinnvoller formatiert.

  • Bernhard Frank's Blog

    Logparser Web-Statistik (Beispiele): Spitzenbelastung und Stoßzeiten von http Anfragen / Sekunde ermitteln.

    • 0 Comments

    Folgende Logparser Beispiel Abfrage liefert die Top 5 der erreichten http Requests/sec aus der IIS Logdatei, dazu werden die Zeiten mittels Quantize commando in 1-Sekunden-Blöcken zusammengefasst:

    logparser -i:W3C "SELECT Top 5 date,QUANTIZE(time, 1) AS [Interval],Count(*) As [Hits/s]  from C:\temp\logfiles\combined.log group by s-ip,Interval,date order by [Hits/s] DESC"

    liefert:

    date       Interval Hits/s

    ---------- -------- ----

    2009-12-11 09:07:18 204

    2009-12-11 09:04:48 204

    2009-12-11 09:06:50 203

    2009-12-11 09:04:52 199

    2009-12-11 09:07:32 196

  • Bernhard Frank's Blog

    IIS Advanced Logging zeichnet keine "Performance counter" auf wenn ApplicationPoolIdentity als Identität für den Arbeitsprozess gewählt ist.

    • 0 Comments

    Szenario:

    • Win 7 + IIS 7.5 + Advanced Logging und eine Website eingerichtet.
    • Website hat eigenen ApplicationPool und läuft under der ApplicationPoolIdentity
    • Advanced Logging für Website konfiguriert und als Felder Performance Counter wie z.B. W3WP-PrivateBytes und CPU-Utilization ausgewählt.
    • Aufruf einer .aspx Seite welche ca. 10 Sekunden lang CPU verbrät.

    Problem:
    die Logfelder für die Performance counter bleiben leer (ApplicationPoolIdentity):

    #Software: IIS Advanced Logging Module

    #Version: 1.0

    #Start-Date: 2009-12-04 10:21:05.973

    #Fields:  cs-uri-stem W3WP-PrivateBytes TimeTakenMS CPU-Utilization

    /default.aspx - 10240


    Abhilfe:
    Nachdem die Application Pool Identität auf den NetworkService gesetzt wurde werden die Einträge mitgeloggt:

    #Software: IIS Advanced Logging Module

    #Version: 1.0

    #Start-Date: 2009-12-04 10:16:13.627

    #Fields:  cs-uri-stem W3WP-PrivateBytes TimeTakenMS CPU-Utilization

    /default.aspx 40357888 10350 53.58

  • Bernhard Frank's Blog

    Setzen einer statische IP Adresse von der Commando-Zeile aus (via WMI):

    • 0 Comments

     

    Cd %SystemRoot%\system32\wbem\

    wmic nicconfig where "caption like '%Local Area Connection%'" call EnableStatic ("192.168.2.5"), ("255.255.255.0")

    Anm: Sucht nach Adapter mit dem ungefähren Namen „Local Area Connection“ d.h. auch  „Local Area Connection 2“ würde da eine statische IP verpasst kriegen.

     

    Ausgabe:

    Method execution successful.

    Out Parameters:

    instance of __PARAMETERS

    {

            ReturnValue = 0;

    };

     

    Anderer Return code -> bist Du wirklich Admin?

  • Bernhard Frank's Blog

    Dynamic Datacenter Toolkit (aka DDC) Demo Code und Docs Download Link

    • 0 Comments

    Das DDC Toolkit findet man im Internet unter:

    1) Dynamic Data Center Toolkit for Hosters auf der MSDN Code Library, oder

    2) (mühsamer) als Bestandteil des Hosting Deployment Accelerators (aka "HDA"):

    um an den angepriesenen Demo Code, z.B. das auf Silverlight basierende Contoso Hosting Portal zu gelangen:

    windowshda.com -> run -> startet eine .hta file mit den Inhalten (benötigt Silverlight)

      ->    

    und von hier aus lassen sich die Sample Codes und Docs des DDC's herunterladen: 

      

    Screenshot des auf Silverlight basierenden Contoso Hosting Customer Panel:

  • Bernhard Frank's Blog

    Was es alles gibt: "PHP on Windows Training Kit"

    • 0 Comments

    bin gerade drüber gestolpert (noch nicht ausprobiert):

    Brief Description
    The PHP on Windows Training Kit includes a comprehensive set of technical content including demos and hands-on labs to help you understand how to build PHP applications using Windows, IIS 7 and SQL Server 2008.

    http://www.microsoft.com/downloads/details.aspx?FamilyID=C8498C9B-A85A-4AFA-90C0-593D0E4850CB&displaylang=en

  • Bernhard Frank's Blog

    PHP (5.3): PHP auf windows (IIS7) via FastCGI -> http 500 er Fehler

    • 0 Comments

    Heute php 5.3 von windows.php.net heruntergeladen (installer) und auf IIS7 eingerichtet

    phpinfo(); erzeugt mir http 500 er Fehler -> IIS7 tracing ergibt:

    ModuleName FastCgiModule
    Data1 FASTCGI_RESPONSE_ERROR
    Data2 PHP Warning: phpinfo(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Europe/Paris' for '2.0/DST' instead in C:\inetpub\testsite\index.php on line 3
    ErrorCode 5
    ErrorCode Access is denied. (0x5)

    Lösung: 

    In der php.ini

    date.timezone = "Europe/Berlin"

    (anschließend alle php-cgi.exe beendet)
    Anm.: http://ie.php.net/manual/en/timezones.europe.php

     

     

  • Bernhard Frank's Blog

    Logparser Web-Statistik (Beispiele): Balken-Diagramm (Column3D) über die Top 10 Downloads von gefilterter Dateien aus Web Server Log.

    • 0 Comments

    Folgende Logparser Beispiel Abfrage - stellt die Top 10 (nach Anzahl) erfolgreicher Downloads von gefilterter Dateien (*.msi,*.zip,...) aus einer Web Server Log Datei als Balkendiagramm dar, aufgelistet nach Anzahl und Teil der URL.

    logparser -i:W3C "select top 10 Distinct EXTRACT _SUFFIX(cs-uri-stem,0,'/'),count(*) As [Number of Downloads] into c:\work\downloads_web.jpg from c:\inetpub\logs\logfiles\W3SVC1\*.log Where sc-status = 200 AND (cs-uri-stem like '%msi%' OR cs-uri-stem like '%zip%' OR cs-uri-stem like '%exe%' OR cs-uri-stem like '%msu%') AND NOT cs-uri-stem like '%RaktajinoSetup.msi%' AND cs-uri-stem like '%webapps%' Group By cs-uri-stem Order by [Number of Downloads] DESC" -o:CHART -chartType:Column3D -values:ON -groupSize:1024x768 -view:ON -fileType:JPG

  • Bernhard Frank's Blog

    Logparser Web-Statistik (Beispiele): Http Status Codes aus Web log Datei als Tortengrafik (pie chart)

    • 1 Comments

    Folgende Logparser Beispiel Abfrage ermittelt die HTTP status codes aus einer Logdatei summiert diese jeweils auf und stellt das Ganze als Kuchendiagramm dar:

    logparser -i:W3C "select sc-status, Count(*) As [Count] into c:\work\status.jpg from c:\inetpub\logs\logfiles\W3SVC1\*.log group by sc-status Order by [Count] DESC" -chartType:PieExploded3D -chartTitle:"StatusCodes" -view:ON -filetype:jpg

     

    liefert:

  • Bernhard Frank's Blog

    IIS: Wie finde ich heraus welche http Anfragen von http.sys (Kernel Cache) gecached werden?

    • 0 Comments

    Folgendes Kommando:

    netsh http show cachestate

     

    liefert z.B:

     

    Snapshot of HTTP response cache:

    --------------------------------

     

    URL: http://localhost:80/welcome.png

        Status code: 200

        HTTP verb: GET

        Cache policy type: User invalidates

        Creation time: 2009.1.15:17.33.14:0

        Request queue name: DefaultAppPool

        Content type: image/png

        Content encoding: (null)

        Headers length: 187

        Content length: 184946

        Hit count: 23

        Force disconnect after serving: FALSE

     

  • Bernhard Frank's Blog

    php.ini Einstellungen für PHP auf Windows

    • 1 Comments

    Für alle die ab und an php auf windows manuell einrichten und sich fragen welche settings man nochmal am besten in der php.ini Datei machen sollte.

    Setting

    Description

    safe_mode=Off
    safe_mode_gid=Off

    Disable safe mode

    open_basedir="c:\inetpub\"

    Restrict where PHP processes can read and write on a file system.

    expose_php=Off

    Hide presence of PHP

    max_execution_time=30
    max_input_time=60

    Limit script execution time

    memory_limit=16M
    upload_max_filesize=2M
    max_input_nesting_levels=64

    Limit memory usage and file sizes

    display_errors=Off
    log_errors=On
    error_log="C:\path\of\your\choice\error.log"

    Configure error messages and logging. You can set display_errors=On for developer machine on a server you should turn it off.

    Make sure the IIS application pool identity has write access to the log file.

    register_globals=Off

    This setting disables register_globals, which prevents PHP from injecting your scripts with global variables that are defined based on Web request data.

    post_max_size=8M

    Sets max size of post data allowed. This setting also affects file upload.

    extension_dir

    This setting specifies a location for PHP extensions. Typically for PHP 5.2.x,you use the following values for this setting: extension_dir="./ext" -or- extension_dir="C:\Program Files\PHP\ext"

    cgi.force_redirect=0

    You must turn this off under IIS. Left undefined, PHP will turn this on by default. IIS takes care of CGI handling.

    cgi.fix_pathinfo=1

    This provides PATH_INFO/PATH_TRANSLATED support for CGI. The previous behavior of the PHP CGI module was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to ignore the PATH_INFO setting. For information about PATH_INFO, see the CGIspecification. Changing this setting to 1 causes the PHP CGI to fix its paths toconform to the specification.

    fastcgi.impersonate=1

    FastCGI under IIS supports the ability to impersonate security tokens of the calling client. This setting allows IIS to define the security context that the request runs under. |

    fastcgi.logging=0

    A PHP request to the IIS FastCGI module will fail if any data is sent on stderr by using the FastCGI protocol. DisablingFastCGI logging prevents PHP from send- ing error information over stderr, whichprevents the Web server from sending HTTP 500 response codes to the client.

    upload_tmp_dir

    The temporary directory used for storing files when doing file upload. Must be writable by whatever user PHP is running as. If not specified PHP will use the system's default (%systemroot%\temp).

    Sample: upload_tmp_dir="C:\php\tmp"

    allow_url_fopen=Off
    allow_url_include=Off

    Disable remote URLs for file handling functions, which may cause code injection vulnerabilities.

    date.timezone

    The default timezone used by all date/time functions if the TZ environment variable isn't set. The precedence order is described in the date_default_timezone_get() page. See List of Supported Timezones for a list of supported timezones.

    Annot: Seen this to cause http 500 errors on iis via fastcgi if missing. Sample value e.g. date.timezone = "Europe/Berlin"

    session.save_path

    session.save_path defines the argument which is passed to the save handler. If you choose the default files handler, this is the path where the files are created. This directory must not be a world-readable directory (i.e. don't publish via WWW)

    Sample: session.save_path ="C:\php\session"

    Quellen:

    http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/#PHP_Security_Recommendations_

    http://www.phparch.com/c/magazine/issue/97

  • Bernhard Frank's Blog

    Logparser Web-Statistik (Beispiele): Überwachungs Zeitraum von Web-Log-Dateien ermitteln.

    • 1 Comments

    Folgende Logparser Beispiel Abfrage ermittelt aus mehreren Log Dateien den ersten und letzten Eintrag anhand des Datum-Feldes und errechnet die Differenz: 

    logparser.exe -i:W3C "select MIN(distinctdate) As BeginDate,MAX (distinct date) As EndDate, SUB(TO_DATE(MAX (distinct date)),TO_DATE(MIN (distinct date))) As Diff from c:\inetpub\logs\logfiles\W3SVC1\*.log

     

    liefert z.B.:

     

    BeginDate  EndDate    Diff

    ---------- ---------- ----------

    2009-05-11 2009-06-09 0000-01-30

     

    Statistics:

    -----------

    Elements processed: 2208

    Elements output:    1

    Execution time:     0.42 seconds

Page 2 of 2 (49 items) 12