-
09.06.10 00:10 #1
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,
josDie Logo-Link-Sammlung: http://www.tutorials.de/tutorials144667.html
[Kamera..........Canon EOS 1DM2N, Canon EOS 5DMII]
-
09.06.10 02:15 #2
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"
-
09.06.10 17:10 #3
Okay, vielen Dank für die Information! So kann ich es lösen!
Dankesehr!
LieGrü
josDie Logo-Link-Sammlung: http://www.tutorials.de/tutorials144667.html
[Kamera..........Canon EOS 1DM2N, Canon EOS 5DMII]
-
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."
-
15.06.10 00:05 #5KIDS 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"
-
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
-
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 von Friedrich Nietzsche
-
@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."
-
http://de2.php.net/intval
GrüßeThe 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.
-
@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 ?
-
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.
-
18.06.10 17:26 #12
- Registriert seit
- Jun 2005
- Beiträge
- 8.169
Hi.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ßIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
was zum Teufel hat ein 32bit PHP auf nem 64bit OS zu suchen?
naja ich habe alles gesagt, macht mal weiter
-
18.06.10 18:58 #14
- 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().Grüße
--
Qualität des Codes wird in WTF's/Min gemessen: Je mehr, desto schlechter der Code ;-)
-
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
-
32Bit oder 64Bit?
Von grafixxer im Forum Microsoft WindowsAntworten: 18Letzter Beitrag: 01.04.10, 09:37 -
Java 64bit oder 32bit?
Von gamp im Forum JavaAntworten: 1Letzter Beitrag: 08.03.10, 12:54 -
RCP + SWT 32bit Eclipse auf 64bit Windows
Von WolfBauer im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 3Letzter Beitrag: 30.10.09, 12:33 -
32bit Software auf 64bit Vista
Von karl123 im Forum Microsoft WindowsAntworten: 4Letzter Beitrag: 23.05.09, 17:27 -
32Bit Datein in 64Bit compilieren
Von AndreG im Forum Linux & UnixAntworten: 4Letzter Beitrag: 06.05.05, 22:25



2Danke

Zitieren


Login






[PHP][Snippet] Array zu XML konvertieren