tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
15
ZUGRIFFE
1199
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von josDesign
    josDesign josDesign ist offline Mitglied Brillant
    Registriert seit
    Jun 2002
    Ort
    Österreich
    Beiträge
    861
    Blog-Einträge
    4
    Hallo liebe Gemeinde,

    ich frage mich ob es eine Möglichkeit gibt in PHP um vom Webserver herauszufinden ob dieser ein 32bit OS oder ein 64bit OS laufen hat.
    Die Kernelinformation spuckt manchesmal aus das dieser auf 64bit ist je nach Linux-Distri.

    Hat evtl. jemand einen Tipp für mich? Mit bestem Dank im Voraus,
    jos
     
    Die Logo-Link-Sammlung: http://www.tutorials.de/tutorials144667.html
    [Kamera..........Canon EOS 1DM2N, Canon EOS 5DMII]

  2. #2
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Nein. PHP ist an den Apache gebunden und dieser kann auch auf einem 64bit System als 32bit Applikation laufen, d. h. deine Informationen wären extrem fehleranfällig.

    Die einzige Möglichkeit wäre per exec() externe Skripte anzustoßen, die dir diese Antwort geben.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  3. #3
    Avatar von josDesign
    josDesign josDesign ist offline Mitglied Brillant
    Registriert seit
    Jun 2002
    Ort
    Österreich
    Beiträge
    861
    Blog-Einträge
    4
    Okay, vielen Dank für die Information! So kann ich es lösen!

    Dankesehr!

    LieGrü
    jos
     
    Die Logo-Link-Sammlung: http://www.tutorials.de/tutorials144667.html
    [Kamera..........Canon EOS 1DM2N, Canon EOS 5DMII]

  4. #4
    Avatar von EvilO
    EvilO EvilO ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Wuppertal (NRW)
    Beiträge
    172
    Nachtrag: Mit der PHP-Funktion pack() müsste man auch zur Laufzeit herausfinden können, ob man sich auf einem 32 oder 64 bit System befindet.
    PHP-Code:
    echo (strlen(pack('i'1)) * 8); 
     
    "Die Deutsche Rechtschreibung ist Freeware, dass heisst jeder kann sie benutzen wann er will, ohne dafür zu zahlen. Sie ist aber nicht Open Source, also darf sie ohne Zustimmung der Entwickler nicht verändert und weiterverbreitet werden."

  5. #5
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Zitat Zitat von EvilO Beitrag anzeigen
    Nachtrag: Mit der PHP-Funktion pack() müsste man auch zur Laufzeit herausfinden können, ob man sich auf einem 32 oder 64 bit System befindet.
    PHP-Code:
    echo (strlen(pack('i'1)) * 8); 
    Aber auch die Funktion hängt doch vom Apache ab und nicht vom OS, oder nicht?
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Schau mal hier herein: http://www.ush.it/2007/08/22/archite...y-php-anomaly/

    Wobei ich fürchte, auch da kommt die von Felix erwähnte Fehleranfälligkeit zum Tragen
     

  7. #7
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Falls Du die noetigen Rechte haste kannst Du einfach ein beliebiges Binary oeffnen (z.B. /bin/bash) und die ersten, ich glaube 5, Bytes auslesen.
    32 Bit Binaries fangen so an (Hex-Werte):
    7F 45 4C 46 01 01 01

    64 Bit so (kann's grad nicht genau nachpruefen da ich hier grad kein 64-Bit Geraet zur Hand habe, sollte aber richtig sein):
    7F 45 4C 46 02 01 01

    Entsprechend hast Du in Byte 5 Deinen Marker fuer die Unterscheidung.

    Natuerlich koennte auch ein 32 Bit Binary auf einem 64 Bit OS installiert sein, ist aber doch eher unwahrscheinlich.

    Ansonsten koenntest Du auch file nutzen um ein Binary zu identifizieren.

    Code bash:
    1
    2
    
    [dennis@cyberdemon ~]$ file /bin/bash
    /bin/bash: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped

    Der Unterschied hier ist dass Du ein externes Programm ausfuehrst und dessen Ausgabe auswertest. Persoenlich ist mir der andere Weg auf jedem Fall lieber, vor allem da keine externen Programme ausgefuehrt werden muessen. Zum einen geht das nicht immer, und schoen ist es schon garnicht.
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  8. #8
    Avatar von EvilO
    EvilO EvilO ist offline Mitglied Gold
    Registriert seit
    Feb 2004
    Ort
    Wuppertal (NRW)
    Beiträge
    172
    @Felix Jacobi
    Soweit ich weiss ist pack() abhängig vom Betriebssystem, man kann damit schließlich auch herausfinden, ob der Computer Low-Endian oder Big-Endian verwendet, diese Information müsste vom Betriebssystem kommen.

    Zitat von php.net/pack (aus der Tabelle)
    i - vorzeichenbehaftete Ganzzahl (Größe und Byte-Folge maschinenabhängig)
     
    "Die Deutsche Rechtschreibung ist Freeware, dass heisst jeder kann sie benutzen wann er will, ohne dafür zu zahlen. Sie ist aber nicht Open Source, also darf sie ohne Zustimmung der Entwickler nicht verändert und weiterverbreitet werden."

  9. #9
    Avatar von bn
    bn bn ist offline Mitglied Brokat
    Registriert seit
    Oct 2002
    Ort
    Berlin
    Beiträge
    395
    http://de2.php.net/intval

    The maximum value depends on the system. 32 bit systems have a maximum signed integer range of -2147483648 to 2147483647. So for example on such a system, intval('1000000000000') will return 2147483647. The maximum signed integer value for 64 bit systems is 9223372036854775807.
    Grüße
     

  10. #10
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    @bloddy newbie:
    Das ist ja die generelle Frage....bezieht sich "System" auf PHP oder auf das OS.
    Also: was macht ein 32bit-PHP auf einem 64bit-OS ?
     

  11. #11
    Avatar von bn
    bn bn ist offline Mitglied Brokat
    Registriert seit
    Oct 2002
    Ort
    Berlin
    Beiträge
    395
    System ist System und somit auch OS. Insofern verstehe ich deine Frage leider nicht.

    Mittels INTVAL lässt sich laut Doku sehr einfach heraus finden, ob das OS 32 oder 64 bit ist.
     

  12. #12
    deepthroat deepthroat ist gerade online Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Hi.
    Zitat Zitat von bloddy newbie Beitrag anzeigen
    System ist System und somit auch OS. Insofern verstehe ich deine Frage leider nicht.

    Mittels INTVAL lässt sich laut Doku sehr einfach heraus finden, ob das OS 32 oder 64 bit ist.
    Ein 32bit Prozess der unter einem 64bit OS läuft bleibt immer noch ein 32bit Prozess. Dabei ändern sich nicht durch Magie die Größen der darstellbaren Integerwerte.

    Ein 32bit Prozess kann eben auf einem 64bit OS nicht die 64bit Vorzüge genießen. Er setzt auf die 32bittigen Systembibliotheken auf und ist somit an deren Limitierungen gebunden.

    Gruß
    Sven Mintel bedankt sich. 
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  13. #13
    Avatar von bn
    bn bn ist offline Mitglied Brokat
    Registriert seit
    Oct 2002
    Ort
    Berlin
    Beiträge
    395
    was zum Teufel hat ein 32bit PHP auf nem 64bit OS zu suchen?

    naja ich habe alles gesagt, macht mal weiter
     

  14. #14
    Avatar von saftmeister
    saftmeister saftmeister ist offline Der Saft sei mit dir
    tutorials.de Premium-User
    Registriert seit
    May 2006
    Ort
    There is no place like 127.0.0.1
    Beiträge
    3.521
    Noja, ich will mein PHP unter meinem 64er Win7 nicht selbst bauen. Da ich von php.net (noch) keine 64Bit-Version saugen kann (genauso wenig wie von httpd.apache.org ein 64er Indianer), habe ich natürlich die 32er Versionen laufen. Insofern ist das, denke ich, nicht unbedingt eine Seltenheit...

    Im Übrigen gibts bei phpinfo() eine Angabe der verwendeten Architektur. Diese ist auch auf meinem 64er OS mit einem 32er Apache und PHP immer noch x86 und nicht x64. Was die Aussagen von Felix und deepthroat bekräftigt.

    Das Auslesen einer Datei im Datei-System halte ich ebenfalls für bedingt geeignet. Vorallem, wenn man vorhat sein Script weiter zu geben, schließlich kann man nicht wissen, wo das später mal ausgeführt werden soll (Windows kennt /bin/bash nicht).

    Für Linux-Systeme gibts immer hin noch die Funktion posix_uname().
    Sven Mintel bedankt sich. 
    Grüße
    --
    Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)

  15. #15
    Avatar von bn
    bn bn ist offline Mitglied Brokat
    Registriert seit
    Oct 2002
    Ort
    Berlin
    Beiträge
    395
    Ich habe nicht ausgeschlossen, dass ein 32bit PHP auf einem 64bit System installiert werden kann. Aber
    a) wird das 64bit Package für Linux mit großer Wahrscheinlichkeit verfügbar sein und
    b) Windows (will jetzt keine Grundsatzdiskussion los treten) ist sowieso eine Welt für sich. Das hier keine 64bit Packages vorliegen, spricht für sich.

    Die Frage des Themenstarters kann sowieso nur geklärt werden, wenn er sich zum bisherigen Gesprächsverlauf mal äußern würde. Alles andere ist doch nur Augenwischerei.

    Grüße BN
     

Ähnliche Themen

  1. 32Bit oder 64Bit?
    Von grafixxer im Forum Microsoft Windows
    Antworten: 18
    Letzter Beitrag: 01.04.10, 09:37
  2. Java 64bit oder 32bit?
    Von gamp im Forum Java
    Antworten: 1
    Letzter Beitrag: 08.03.10, 12:54
  3. RCP + SWT 32bit Eclipse auf 64bit Windows
    Von WolfBauer im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 3
    Letzter Beitrag: 30.10.09, 12:33
  4. 32bit Software auf 64bit Vista
    Von karl123 im Forum Microsoft Windows
    Antworten: 4
    Letzter Beitrag: 23.05.09, 17:27
  5. 32Bit Datein in 64Bit compilieren
    Von AndreG im Forum Linux & Unix
    Antworten: 4
    Letzter Beitrag: 06.05.05, 22:25