64-bit php damgası sorunu

5 Cevap php

Yani Windows Server sunucu 2003 64-bit sürümü yükseltilmiş 32-bit timestamp sınırın ötesinde tarihleri ​​kullanmak gerekiyor. Ve PHP 5.2.5 64-bit çalışan. Ancak hala 32-bit sınırın ötesinde tarihleri ​​kullanamazsınız.

echo strtotime ("2050/11/11");

hiçbir şey döndürür.

C kullanarak IIS 6.0 üzerinde php Koşu: \ WINDOWS \ system32 \ inetsrv \ fcgiext.dll

Ben bir şey eksik varsa bana bildirin. Ben ne gerek yapacağım ama mümkünse mevcut kodunu değiştirmek zorunda kalmamak i yerli php fonksiyonlarını kullanmayı tercih ediyorum ADOdb Tarihi Kütüphanesi bulundu.

Bu, Windows Server 2003 64-bit üzerinde çalışmak için mümkün olmadığını herkes biliyor musun?

teşekkürler

5 Cevap

Kod yeniden yazma en aza indirmek için:

<?php    
function adodb_strtotime($str) {
   $dateTime = new DateTime($str);
    return $dateTime->format("U");
}
?>

then add this class: http://phplens.com/phpeverywhere/adodb_date_library

sonra sadece tüm normal tarih işlevleri önünde adodb_ ekleyin. Örneğin mktime adodb_mktime olacak

tarih adodb_date olacak

strtotime adodb_strtotime ... Eğer fikir almak olacak

Bu 32bit ve 64bit çalışır ve php5x yerleşik olarak DateTime sınıfını kullanın

http://us.php.net/manual/en/class.datetime.php

<?php

$dateTime = new DateTime("+200 years");


echo $dateTime->format("Y-m-d H:i:s");

?>

Bug tarafından belirtildiği gibi, bu iddia, 2008 yılında tespit edildi #44209.

derick@php.net diyor

Bu hata CVS sabit olmuştur.

Snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/.

Rapor için teşekkür ederiz ve yardım için bize daha iyi PHP olun.

PHP henüz Win32 üzerinde bir 64-bit time_t kullanmaz.

Ben sadece 32bit makinede denedim ve bu var_dump ile yanlış döndürür:

var_dump strtotime("11-11-2050");

yankı olarak yanlış bir şey görüntülenebilir değildir döndürür. I http://php.net/manual/en/function.strtotime.php üzerine php Changelog fark

5.1.0 Şimdi -1 yerine, başarısızlık durumunda FALSE döndürür.

Ayrıca bu sayfanın altındaki bir not devletler:

Not: Bir damgası geçerli aralığı Cuma, 13 Aralık tipik olarak 1901 Sal, 19 Ocak 2038 03:14:07 UTC için 20:45:54 UTC. (Bu bir 32 bitlik imzalı tamsayı için minimum ve maksimum değerlerine karşılık tarihler.) Ayrıca, tüm platformlar olumsuz damgalarını desteklemiyor, bu yüzden tarih aralığı Unix dönemi daha erken sınırlı olabilir. Bu demektir ki, örneğin önce 1 Ocak 1970 için tarihi Windows, bazı Linux dağıtımları, ve birkaç diğer işletim sistemlerinde çalışmaz. PHP 5.1.0 ve üstü sürümleri olsa bu sınırlamanın üstesinden.

Bu yüzden 64bit sürüm php ile 32bit tamsayı kullanarak olabilir Windows bile düşünüyorum. Eğer php 64bit sürümünü yüklemek mi?

phpinfo () Sistem satırında çalışan php sürümünü göstermek gerekir.