С помощью усадьба, Я пытаюсь запустить BIGINT пример № 5 из документы по PHP и я получаю «Уведомление о переполнении целых чисел». Флаг JSON_BIGINT_AS_STRING
игнорируется, и результат является недопустимым (максимальный bigint 9223372036854775807).
Экземпляр Homestead имеет следующий программный стек:
Затем я проверил это на 3v4l, и оно работает. Я не знаю их настройки JSON.
Затем я протестировал его на предустановленном PHP OS X, который:
Это тоже работает — как в документах.
Впоследствии я нашел Эта проблема что приводит к этот коммит и, похоже, именно здесь возникают проблемы, но почему Remi делает недействительными> 64-битные числа и вызывает переполнение целых чисел, несмотря на то, что расширение JSON по умолчанию (изначально присутствует в 3v4l и OS X) этого не делает? Не противоречит ли это утверждению, что это «падение замены»? В своем текущем состоянии это расширение, которое по умолчанию включено во многие установки, идет вразрез с официальной документацией PHP.
Есть ли хорошие решения для этого, которые не требуют внутренней замены используемых библиотек, например, Guzzle?
Изменить: После поиска я нашел этот что подтверждает, что мнение одного разработчика является причиной проблем здесь.
Да, это действительно просто мнение Реми. Таким образом, это явно не 100% замена. Вы спрашиваете, почему это разрешено? Потому что никто не может запретить свободному разработчику писать свой собственный код так, как он хочет.
Итак, все, что вы можете сделать, — это самим жаловаться и компилировать ext / json (вместо использования JSON-C).
Это означает, что клонирование из источника php-src (https://github.com/php/php-src), проверьте ветку PHP-5.6, перейдите в каталог ext / json и скомпилируйте через phpize && ./configure && make install
, Затем добавьте это расширение в ваш php.ini вместо расширения json-c. [При необходимости, вам может понадобиться сначала установить некоторые инструменты компиляции …]
Обратите внимание, что в PHP 7.0 расширение json заменено новой реализацией (см. Также RFC: https://wiki.php.net/rfc/jsond), который не имеет этих проблем и, кроме того, не имеет проблем с лицензией.
Других решений пока нет …