Windows-Server-2008
64 位 Windows Server 2008 上的 x86/32 位 PHP
這可能不是這個問題的正確位置,如果不是,請指向正確的 SE 站點。
該函式的 PHP 文件
ip2long
指出:筆記
因為 PHP 的整數類型是有符號的,所以很多 IP 地址在 32 位架構上會產生負整數
哪個很好,但是如果 PHP 的版本有所不同,我有點困惑?
我正在執行安裝了 32 位 PHP 的 64 位 Server 2008,並且我得到了帶有一些 IP 地址的負整數。我顯然是在 64 位架構上執行的,所以根據(誠然非常模糊的)文件,情況不應該如此。
我只能假設這是因為我正在執行 32 位 PHP?但我無法在任何地方證實這一點。
您是正確的,因為您正在執行 32 位版本的 PHP。由於它被編譯為 32 位應用程序,儘管在 64 位系統上執行,您仍然不會得到 64 位整數。
還應該注意的是,在 Windows 上編寫 64 位版本的 PHP 時,不提供 64 位整數(或大文件支持),因此即使您使用 64 位版本,您仍然會遇到整數溢出。
您可以嘗試使用
sprintf
with%u
格式來嘗試獲取 64 位數字的字元串表示形式。我將此程式碼用於執行在 32 位上的舊 PHP4 應用程序,我想列印出一個 64 位整數。請注意,如果您需要執行除了輸出 64 位數字之外的任何操作,它可能不適合。$string = sprintf('%u', $someBigInteger);