win7x64とcentosでintvalの最大値の範囲が異なる問題
開発にはwin7x64を使用しており、Webサーバーはphp5.5の内蔵Webサーバーを使用しています
突然問題を発見しました。昨日、同じコードが win7 と centos で実行され、結果は異なります:
var_dump(intval('21474836470')); Win7 での出力: int 2147483647
Centos での出力: int 30000000000
マニュアルには次のように記載されています:
最大値はオペレーティング システムによって異なります。 32 ビット システムの符号付き整数の最大範囲は -2147483648 ~ 2147483647 です
64 ビット システムの符号付き整数の最大値は 9223372036854775807 です。
しかし、私のシステムは win7x64 です。ダウンロードした php は検証済みで、64 ビット版です。
intval が 32 ビットであるように見えるのはなぜですか? ? ?
Windows で phpinfo を見ると、それが 64 ビットであることもわかります:
PHP バージョン 5.5.14
システム Windows NT 7D494368868AFA1 6.1 ビルド 7601 (Windows 7 Ultimate Edition Service Pack 1) AMD64
ビルド日 Jun 25 2014 12:37:32
コンパイラー MSVC11 (Visual C 2012)
アーキテクチャ x64
-----ソリューションのアイデア---------- --- ----------これは、オペレーティング システムのバージョンだけでなく、PHP のバージョンにも依存します。公式の PHP バージョンはすべて 32 ビットです。
--- ---解決策のアイデア----------------------開発に 64 ビット バージョンを使用する必要があるかどうかによって異なります動作環境について。
そうしないと、64 ビット サーバーが見つからないため、プロジェクトは中止されます。
さらに、64 ビット システムは、真のシステムと偽のシステムに分けることができます。つまり、64 ビット アーキテクチャを備えた 64 ビット システムと、64 ビットのシステムです。 32 ビット アーキテクチャのシステム (32 ビット システム (32 ビットおよび準 32 ビットと呼ばれます)
さらに、発生した問題はバグである可能性があります (バグ Web サイトで確認できます)現在は 5.6.9 ですが、修正されている可能性があります。