prüfen ob 32bit oder 64bit Server
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anzeigen
ausgabe
betriebssystem
bit
code
edition
enterprise
http
klicken
methode
negative zahl
prozessor
server
start
system
test
url
vorzeichen
windows
zeichen
-
Hallo
wie kann ich mit PHP einfach prüfen,
ob das Script gerade auf einem Server mit 32bit oder mit 64bit läuft ?
idee:
if ( PHP_INT_SIZE == 8 ) { $sbit = 64; } else { $sbit = 32; }
ist das zuverlässig? ... also ist die Konstante PHP_INT_SIZE immer verfügbar?
gibt es bessere Möglichkeit um zu prüfen ob Server mit 32bit oder mit 64bit läuft ?
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hab leider keine Ahnung ob das mit dem PHP-Skript funktioniert, aber:
1. Dein Hoster sollte dir auskunft darüber geben können.
2. Wenn dein Server Linux hat:
Gebe in die Konsole folgendes ein:
$ uname -a
Dann kommt eine Ausgabe wie z.b.:
Linux ora100 2.6.5-7.252-smp #1 SMP Tue Feb 14 11:11:04 UTC 2006 x86_64 x86_64 x86_64 GNU/Linux
x86_64 = 64bit, bei 32bit steht da i386 oder i486 oder i586 oder i686
Wenn dein Server Windows hat:
Wenn Sie Windows Server 2003 verfügen, gibt es zwei Methoden, um zu bestimmen, ob Sie eine 32-Bit-Version oder eine 64-Bit-Version ausgeführt werden. Wenn eine Methode nicht funktioniert, versuchen Sie die andere Methode.
Methode 1: Anzeigen von Systemeigenschaften in der Systemsteuerung
Klicken Sie auf Start, und klicken Sie dann auf Ausführen.
Geben Sie sysdm.cpl ein, und klicken Sie dann auf OK.
Klicken Sie auf die Registerkarte Allgemein . Das Betriebssystem wird wie folgt angezeigt:
Für eine 64-Bit-Version des Betriebssystems Windows Server 2003 Enterprise X 64 Edition unter System angezeigt.
Für eine 32-Bit-Version des Betriebssystems Windows Server 2003 Enterprise Edition unter System angezeigt.
Methode 2: Fenster Systeminformationen anzeigen
Klicken Sie auf Start, und klicken Sie dann auf Ausführen.
Geben Sie "Winmsd.exe", und klicken Sie dann auf OK.
Wenn Systemübersicht im Navigationsbereich ausgewählt ist, suchen Sie im Detailbereich Prozessor unter Element . Beachten Sie den Wert ein.
Wenn der Wert für Prozessor mit X 86beginnt, wird der Computer eine 32-Bit-Version von Windows ausgeführt.
Wenn der Wert für Prozessor mit EM64T oder IA-64beginnt, wird der Computer eine 64-Bit-Version von Windows ausgeführt.
(Quelle: http://support.microsoft.com/kb/827218/de#method3)
Wie gesagt, ob das mit PHP funktioniert, weiß ich leider nicht. -
thunderbirdshop schrieb:
wie kann ich mit PHP einfach prüfen,
ob das Script gerade auf einem Server mit 32bit oder mit 64bit läuft ?
Diese Möglichkeit hier scheint mir plausibel:
http://stackoverflow.com/questions/2353473/can-php-tell-if-the-server-os-it-64-bit
Diese Routine sagt dir zumindest, ob PHP in der 32 oder 64 bit Version läuft. Mehr dürfte ja auch nicht interessant sein für das PHP-Skript an sich!?
Leicht abgewandelt auch das hier:
http://stackoverflow.com/questions/8891304/how-to-find-out-if-a-shared-hosting-is-running-32-or-64-bit-with-php
Beitrag zuletzt geändert: 14.8.2012 22:37:25 von burgi -
gut, Danke
habe jetzt mehrere Varianten zur Auswahl
a) mit ... INT-Werten als Zahl
function server_bit() { $int = "9223372036854775807"; $int = intval($int); if ($int == 9223372036854775807) { return '64'; } elseif ($int == 2147483647) { return '32'; } else { return 'error'; } } echo "<br />". server_bit(). " bit \n";
b) mit .... INT size (in byte)
$sbit1 = (PHP_INT_SIZE * 8); echo "<br />". $sbit1 . " bit \n";
c) mit ... INT max size
$sbit2 = ((PHP_INT_MAX == 2147483647)?'32':'64'); echo "<br />". $sbit2 . " bit \n";
d) mit ... OS Machine type (String: '_64')
]$sbit3 = ((strpos(php_uname('m'), '_64') === FALSE)?'32':'64'); echo "<br />". $sbit3 . " bit \n";
und noch was ganz komisches
e) mit ... decbin() ... ???? ...
function systemBits($iBits = null) { $iSystemBits = strlen(decbin(~0)); return is_null($iBits) ? $iSystemBits : $iSystemBits == $iBits; } echo "<br />systemBits: ". systemBits() ."\n";
decbin(~0) .. was auch immer das ~0 ist .. ??
siehe auch http://php.net/manual/de/function.decbin.php
komisch .. wenn ich in decbin() den größten INT Wert von 64 bit einsetze,
dann bekomme ich nur 63 Zeichen ... ?!
wenn ich -1 (minus Eins) einsetzte, dann bekomme ich 64
TESTS:
echo "<br />Test A\n"; $decbinx = decbin(~0); echo "<br />~0\n"; echo "<br />".$decbinx."\n"; echo "<br />".strlen($decbinx)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test A ~0 1111111111111111111111111111111111111111111111111111111111111111 64 --------------------- */ echo "<br />Test B\n"; $decbin1 = decbin(9223372036854775807); echo "<br />9223372036854775807\n"; echo "<br />".$decbin1."\n"; echo "<br />".strlen($decbin1)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test B 9223372036854775807 111111111111111111111111111111111111111111111111111111111111111 63 --------------------- */ echo "<br />Test C\n"; $decbin2 = decbin(-1); echo "<br />-1\n"; echo "<br />".$decbin2."\n"; echo "<br />".strlen($decbin2)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test C -1 1111111111111111111111111111111111111111111111111111111111111111 64 --------------------- */ echo "<br />Test D\n"; $decbin3 = decbin(-9223372036854775807); echo "<br />-9223372036854775807\n"; echo "<br />".$decbin3."\n"; echo "<br />".strlen($decbin3)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test D -9223372036854775807 1000000000000000000000000000000000000000000000000000000000000001 64 --------------------- */ echo "<br />Test E\n"; $decbin4 = decbin(1234); echo "<br />1234\n"; echo "<br />".$decbin4."\n"; echo "<br />".strlen($decbin4)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test E 1234 10011010010 11 --------------------- */ echo "<br />Test F\n"; $decbin5 = decbin(-1234); echo "<br />-1234\n"; echo "<br />".$decbin5."\n"; echo "<br />".strlen($decbin5)."\n"; echo "<br />\n"; /* ----- Ausgabe ------ Test F -1234 1111111111111111111111111111111111111111111111111111101100101110 64 --------------------- */
also warum denn decbin(~0) und nicht "einfacher" decbin(-1)
wieso kommt bei einer negativen Zahl eigentlich kein FALSE oder ERROR
egal welche negative Zahl ich einsetzte, kommen (im 64 bit system) immer 64 Zeichen ?!?
EDIT .. ahhh .. ohhh
Negative Zahl braucht ja ein Vorzeichen, dass muss ja auch in die 64 bits mit rein
also ist eine Stelle dann das Vorzeichen ... ach dieser binärcode ... uiuiui ...
ohweh ...
bin da grad etwas abgeschweift in die Welt der Einser und Nuller
... will ja eigentlich nur ermitteln ob System 32 oder 64 bit hat ;)
Beitrag zuletzt geändert: 15.8.2012 2:38:46 von thunderbirdshop -
decbin(~0) .. was auch immer das ~0 ist .. ??
Das ist ein binäres NICHT, das heißt alle bits, die auf 0 stehen werden zur 1 und umgekehrt. Beispiel:// 32 Bit-PHP ~0 === (int)bindec('11111111111111111111111111111111') === -1; // 64 Bit ~0 === (int)bindec('1111111111111111111111111111111111111111111111111111111111111111') === -1;
Die Typenumwandlung zu int ist im Beispiel nötig, da PHP das ganze sonst in einem double speichern würde, dessen Wert wesentlich größer ist! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage