IT Новости из мира ПК
2 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд

Php 64 bit

PHP: Hypertext Preprocessor

PHP For Windows

This site is dedicated to supporting PHP on Microsoft Windows. It also supports ports of PHP extensions or features as well as providing special builds for the various Windows architectures.

If you like to build your own PHP binaries, instructions can be found on the Wiki.

PECL For Windows

PECL extensions for Windows is being worked on. Windows DLL can be downloaded right from the PECL website.

The PECL extension release and snapshot build directories are browsable directly.

Which version do I choose?

If you are using PHP as FastCGI with IIS you should use the Non-Thread Safe (NTS) versions of PHP.


Please use the Apache builds provided by Apache Lounge. They provide VC15 and VS16 builds of Apache for x86 and x64. We use their binaries to build the Apache SAPIs.

With Apache, using the apache2handler SAPI, you have to use the Thread Safe (TS) versions of PHP.

VC15 & VS16

More recent versions of PHP are built with VC15 or VS16 (Visual Studio 2017 or 2019 compiler respectively) and include improvements in performance and stability.

— The VC15 and VS16 builds require to have the Visual C++ Redistributable for Visual Studio 2015-2019 x64 or x86 installed

TS and NTS

TS refers to multithread capable builds. NTS refers to single thread only builds. Use case for TS binaries involves interaction with a multithreaded SAPI and PHP loaded as a module into a web server. For NTS binaries the widespread use case is interaction with a web server through the FastCGI protocol, utilizing no multithreading (but also for example CLI).

What is PGO?

Profile Guided Optimization is an optimization feature available in Microsoft’s Visual C++ compiler that allows you to optimize an output file based on profiling data collected during test runs of the application or module.


amd64 (x86_64) Builds

PHP 7 provides full 64-bit support. The x64 builds of PHP 7 support native 64-bit integers, LFS, 64-bit memory_limit and much more.

Long and multibyte path

PHP 7.1+ supports long and UTF-8 paths. See the manual for details.


Past releases are available from our archives, older versions not found there can be found at the Museum.

OpenSSL default config path changed

As of PHP 7.4.0, the OpenSSL default config path changes from c:usrlocalsslopenssl.cnf to C:Program FilesCommon FilesSSLopenssl.conf for x64 builds, and C:Program Files (x86)Common FilesSSLopenssl.conf for x86 builds. These paths match the defaults of OpenSSL 1.1, and are more inline with the Windows folder structure than the old settings. Note that this path is still configurable via the environment variable OPENSSL_CONF. See also the installation section in the PHP manual.

PHP 7.4 builds use Visual Studio 2017

We used Visual Studio 2019 to build the early releases of PHP 7.4 (up to and including 7.4.0beta2). And although Visual Studio 2019 is generally an improvement over Visual Studio 2017, due to compatibility issues we have decided to switch back to Visual Studio 2017 for our PHP 7.4 builds, and we are planning to stick with this for the complete lifetime of PHP 7.4.

Note that it is still possible to use Apache VS16 builds from Apachelounge in combination with PHP 7.4, since VS 2019 is forward compatible with VS 2017.

Our master snapshots are still built with Visual Studio 2019, and we are planning to stick with Visual Studio 2019 for PHP 8.0.

Visual Studio 2019 Builds

All binary packages we were offering contained «vc#» (for instance, «vc14») in the filename to designate the Visual Studio version which has been used to build them. This number («#») has tradionally been the major number of the respective platform toolset. The preview releases of Visual Studio 2017 shipped with platform toolset 15.00, so we used «vc15» to mark the files. The first GA release of Visual Studio 2017, however, shipped with platform toolset 14.10 (to signal the backward compatibility), but the internal Visual Studio version number stayed 15.00. To avoid confusion with already distributed packages, we stuck with the «vc15» marker. For our Visual Studio 2019 builds (PHP 7.4 and master) we finally changed from «vc#» to «vs#» (note the «s»), where the number now designates the major internal Visual Studio version number. We are planning to stick with this new naming scheme for the foreseeable future.

OpenSSL 1.1.1a

The recent release candidates 7.2.14RC1 and 7.3.1RC1 use the latest OpenSSL 1.1.1 release branch. Please help testing these release candidates with the regard to the OpenSSL compatibility and report bugs. This concerns the OpenSSL extension itself as well as the extensions depending on OpenSSL like cURL.

The windows.php.net site uses SSL by default

Thanks to «Let’s Encrypt», the site now uses SSL by default. All the non SSL links are transparently redirected to the SSL locations.

WinXP users might experience connection issues. It is a high time to switch away from WinXP to some more recent OS version.

Читать еще:  Php pdo connect

AVX builds

In addition to the usual regular snapshots, the current master builds deliver binaries with AVX (Advanced Vector Extensions) support. AVX is an instruction set available in many modern CPUs. The internal PHP implementation uses these specific CPU instructions to improve performance.

Processors, manufactured after 2011, most likely support AVX. The exact information about the hardware can be retrieved by using the Coreinfo tool.

Help us to test these new flavours, any feedback appreciated!

OpenSSL security update

The OpenSSL Security Advisory [19 Mar 2015] announces the availability of the OpenSSL 0.9.8zf and 1.0.1m which fix twelve security vulnerabilities. The latest PHP releases 5.4.39, 5.5.23 and 5.6.7 already contain the updated OpenSSL library. All PHP users are strongly encouraged to upgrade to the corresponding patch versions.

Alternatively, the updated OpenSSL dependency DLLs can be downloaded separately as replacement for the older PHP and Apache versions.

OpenSSL security update

The OpenSSL Security Advisory [07 Apr 2014] announces the availability of the OpenSSL 1.0.1g which fixes CVE-2014-0160. In this regard the latest PHP release 5.5.11 was rebuilt with the OpenSSL 1.0.1g. All PHP users are strongly encouraged to upgrade to PHP 5.5.11. If you already have downloaded this version before 10-Apr-2014, please redownload. The existing private keys should be regenerated as soon as possible.

Alternatively, the updated OpenSSL dependency DLLs can be downloaded separately as replacement for the older PHP versions. Though be aware that this issue affects only OpenSSL 1.0.x and the DLL packages are only applicable to PHP 5.5 and upper.

PHP 5.4 and lower is not affected by this issue.

PHP 5.5.0 Release Announcement

The PHP development team is proud to announce the immediate availability of PHP 5.5.0. This release includes a large number of new features and bug fixes.

The key features of PHP 5.5.0 include:

Changes that affect compatibility:

  • PHP logo GUIDs have been removed.
  • Windows XP and 2003 support dropped.
  • Case insensitivity is no longer locale specific. All case insensitive matching for function, class and constant names is now performed in a locale independent manner according to ASCII rules.

For users upgrading from PHP 5.4, a migration guide is available detailing the changes between 5.4 and 5.5.0.

For a full list of changes in PHP 5.5.0, see the ChangeLog.

PHP 5.4.0 Release Announcement

The PHP development team is proud to announce the immediate availability of PHP 5.4.0. This release is a major leap forward in the 5.x series, which includes a large number of new features and bug fixes.

The key features of PHP 5.4.0 include:

  • New language syntax including Traits, shortened array syntax and more
  • Improved performance and reduced memory consumption
  • Support for multibyte languages now available in all builds of PHP at the flip of a runtime switch
  • Built-in webserver in CLI mode to simplify development workflows and testing
  • Cleaner code base thanks to the removal of multiple deprecated language features
  • Many more improvements and fixes

Changes that affect compatibility:

Extensions moved to PECL:

PHP 5.4 series will be the last versions to support Windows XP and Windows 2003. We will not provide binary packages for these Windows versions anymore after PHP 5.4.

For users upgrading from PHP 5.3 there is a migration guide available here, detailing the changes between those releases and PHP 5.4.0.

For a full list of changes in PHP 5.4.0, see the ChangeLog.

Может ли PHP сказать, если сервер 64-битный?

Я имею дело с Windows здесь.

Я знаю, что вы можете использовать переменную $_SERVER[‘HTTP_USER_AGENT’] для обнаружения ОС браузера, просматривающего страницу, но каким образом PHP может обнаружить ОС сервера?

Для пользовательского интерфейса моей программы я использую веб-страницу PHP. Мне нужно прочитать ключ в реестре, который находится в другом месте в 64-битной ОС (он находится под ключом Wow6432Node ).

Может ли PHP рассказать, на какой ОС он работает? Может ли PHP указать, является ли ОС 64-разрядной или 32-разрядной?

Примечание. Это решение немного менее удобно и медленнее, чем ответ @Salman A. Я бы посоветовал вам использовать его решение и проверить на PHP_INT_SIZE == 8 чтобы узнать, находитесь ли вы на 64-битной ОС.

Если вы просто хотите ответить на 32-битный / 64-битный вопрос, такая проницательная небольшая функция, как это, сделает трюк (воспользовавшись методом intval-функции для обработки ints на основе 32/64 бит).

Вы можете увидеть код в действии здесь: http://ideone.com/JWKIf

Примечание. Если ОС 64 бит, но работает 32-разрядная версия php, функция вернет false (32 бит) …

Чтобы проверить размер целого (4/8 байт), вы можете использовать константу PHP_INT_SIZE . Если PHP_INT_SIZE===8 то у вас есть 64-разрядная версия PHP. PHP_INT_SIZE===4 подразумевает, что используется 32-разрядная версия PHP, но это не означает, что ОС и / или процессор 32-разрядные.

В Windows + IIS есть переменная $_SERVER[«PROCESSOR_ARCHITECTURE»] которая содержит x86 при тестировании в моей системе (WinXP-32bit). Я думаю, что он будет содержать x64 при работе на 64-битной ОС.

Читать еще:  Php socket set option

Немного более короткий и более надежный способ получить количество бит.

Как это работает:

Оператор побитового дополнения, тильда,

, переворачивается каждый бит.

Используя это на 0, включается каждый бит для целого числа.

Это дает вам наибольшее число, которое может обрабатывать ваша установка PHP.

Затем, используя decbin (), вы получите строковое представление этого числа в его двоичной форме

и strlen даст вам количество бит.

Вот он в полезной функции

Попробуйте использовать функцию php_uname

Другой способ – использовать …

Это возвращает следующую строку на моем ibm t400 с запуском Win 7 (64 бит) …

Apache / 2.2.12 (Win32) DAV / 2 mod_ssl / 2.2.12 OpenSSL / 0.9.8k mod_autoindex_color PHP / 5.3.0 mod_perl / 2.0.4 Perl / v5.10.0

К сожалению, его возвращение WIN32, потому что я запускаю 32-битную версию apache.

Вы можете получить общую информацию о процессоре (на сервере * nix), используя cmd …

Вероятно, вам придется использовать комбинацию методов, если вы планируете поддерживать множество разных ОС.

Или используйте PHP COM для вызова wmi

Мне повезло с бит-сменой, и я использовал преимущество boolean casting.

вы можете использовать некоторый скрипт для вывода типа Os

здесь приведен пример того, как получить эту информацию с помощью WMI.

Вы можете вызвать этот скрипт с помощью exec и прочитать вывод.

Немного позднего ответа, но если вы просто хотите определить размер слова, вы можете использовать это: (log(PHP_INT_MAX + 1, 2) + 1)

если у вас установлено COM расширение (в php.ini), вы можете вызвать службу WMI Windows.

Чтобы проверить ОС:

или, проверьте физический процессор:

Нет необходимости делать расчеты. Просто проверьте константу PHP_INT_SIZE:

Размер целых чисел является хорошим индикатором, но не пуленепробиваемым. Кто-то может запустить 32-битное приложение на 64-битной системе.

$ _SERVER [‘SERVER_SOFTWARE’] и $ _SERVER [‘SERVER_SIGNATURE’] могут сообщить вам что-то полезное, в зависимости от реализации сервера.

Вот однострочное решение, чтобы определить, выполняется ли PHP в режиме 64-битного или 32-битного:

После выполнения строки кода выше переменной $php64bit будет установлено значение true или false

Пользуетесь PHP на 64-х битной платформе? Значит потеряли в производительности!

По идее, эта статья должна была выйти в блоге «Linux для всех». Однако, данная проблема не проявила себя в аналогичных тестах на python и perl, а следовательно специфично-зависимая от PHP и разрядности платформы. А так PHP у нас прежде всего связан с сайтами, то и блог соответствующий — хостинг.

Внимание! Следующий текст содержит сцены насилия фрагменты исходного кода и может нанести неисправимый урон вашему мозгу и разрушить веру в человечество linux php.

Все началось с жалобы на то, что под 64-х битной архитектурой следующий скрипт на PHP работает катастрофически медленно:

Действительно, такая проблема присутствует в php5.2, что было проверено на различных дистрибутивах. Следовательно — проблема действительно была связана с разрядностью. Однако, испытав аналог подобного кода на других интерпретаторах, было выяснено — подобной проблемы там нет.
Соответственно — это была исключительно проблема самого PHP, которая проявляла себя именно на 64-х битах. Но почему же настолько сильно, тысяча чертей?

Был произведен запуск со strace, который на i386, PAE и x86_64 выдавал различные значения:

  • i386 mmap
  • PAE mremap (что в логично, это mmap с флагами)
  • x86_64 brk и mmap (а вот зачем brk?)

Что же такое этот brk, почему он так влияет на скорость работы php и как избежать подобных ситуаций?
Прежде всего отмечу, что картинка к топику — кликабельная и ведет на фундаментальную статью, которая раскрывает все подробности работы с памятью. Однако она очень сложная и на английском языке. Если кратко — то brk позволяет изменить размер выделенной памяти вместо откусывания куска через mmap, что сокращает ее фрагментацию.

Но как видно — эта операция очень затратна, и сокращение используемой памяти вызывает настолько большой оверхед, что этим лучше пренебречь. Особенно если речь идет о хайлоаде — скорость отклика значительно важнее, чем экономия памяти.

Так почему же на i386 мы используем только mmap, в то время как на x86_64 туда проникает brk? Для ответа на этот вопрос обращаемся к первоисточнику — malloc:
Normally, malloc() allocates memory from the heap, and adjusts the size of the
heap as required, using sbrk(2). When allocating blocks of memory larger than
MMAP_THRESHOLD bytes, the glibc malloc() implementation allocates the memory
as a private anonymous mapping using mmap(2). MMAP_THRESHOLD is 128 kB by
default, but is adjustable using mallopt(3).

Теперь все стало на свои места — для x86_64 MMAP_THRESHOLD был увеличен, что и привело к такому интересному результату, связанному по всей видимости с очень хитрым сборщиком мусора в PHP, который в данном случае обхитрил сам себя.

А для того, чтоб вернуть вызов malloc как и в i386, надо вернуть старые значения. Это можно сделать поменять глобально, собрав glibc, что нежелательно или сделать выборочно для процесса, указав в переменных ядра старое значение (если конечно glibc собран с поддержкой этой опции):

Если вставить эту магическую строку в init скрипт apache, то вы можете получить прирост в скорости и больший расход по памяти. Разумеется, это актуально не только для php, но возможно и для многих других программ, когда разработчики вызывая malloc подразумевали mmap.

Php 64 bit

установка PHP на вашем ПК разработки позволяет безопасно создавать и тестировать веб-приложение, не затрагивая данные или системы на вашем веб-сайте.

Читать еще:  Trim в php

Установка PHP 7 в современных операционных системах Microsoft Windows и рекомендуемая конфигурация для распространенных веб-серверов.

Ручная установка PHP 7 — это лучший выбор для получения безопасной и оптимизированной системы.

Если вы на 64-разрядную операционную систему установили HTTP-сервер Apache Version 2.4 Win64 , то и PHP и Visual C++ Redistributable (x64) должны быть 64-разрядными.

Более свежие версии PHP построены с помощью VC11, VC14 или VC15
(компилятор Visual Studio 2012, 2015 или 2017 соответственно)
и включают улучшения в производительности и стабильности.
С Apache вы должны использовать версии Thread Safe (TS) для PHP.

TS относится к многопоточным конструкциям. NTS ссылается только на один поток. Вариант использования двоичных файлов TS включает взаимодействие с многопоточным SAPI и PHP, загружаемым как модуль, в веб-сервер.
Для двоичных файлов NTS широко распространенным случаем является взаимодействие с веб-сервером через протокол FastCGI, без использования многопоточности (но также, например, CLI).

Если вы используете PHP в качестве FastCGI с IIS, вы должны использовать версии Non-Thread Safe (NTS) для PHP.

Last updated 3 mins ago


С сервером Apache вы должны использовать версии PHP Thread Safe (TS).

Last updated 3 mins ago

Выберите сборку
Есть 2 типа сборок PHP:

  1. Non-Thread-Safe(NTS) — для служб IIS и других FastCGI веб-серверов (Apache с mod_fastcgi) рекомендуется и для сценариев командной строки
    VC15 x64 Non Thread Safe
  2. Thread-Safe(TS) — для одного процесса веб-служб, как Apache с mod_php
    VC15 x64 Thread Safe

На странице — PHP For Windows: Binaries and sources Releases
скачайте архив нужной вам версии PHP для Windows: 7.x
(x — последний стабильный номер версии)
выбрав в VC15 x64 Thread Safe — Zip

PHP 7.3 (7.3.8)

VC15 x64 Thread Safe (2019-Jul-30 16:05:58)

VC15 x64 Non Thread Safe (2019-Sep-26 08:53:57)

  • Zip [24.39MB]
    sha256: 46475c3b079556f0c46bf9d20f26130a9a369148be502794f93ba1cfc354f911
  • Debug Pack [23.01MB]
    sha256: 55cd3f8af52cae44ac137e9c0222cf7ae7698378dd48c951067af9697829fe3c
  • Development package (SDK to develop PHP extensions) [1.25MB]
    sha256: 91d84351fee1e9630bdc8f7def00166e266adec6d3676f80b718d71cc00b8c1e
  • Зайдите на страницу загрузки официального сайта PHP Group — PHP Downloads
    и нажмите — Windows downloads

    Можно установить PHP как модуль, но доказано, что лучше устанавливать PHP поверх mod_fcgid (fastcgi, best practice)
    VC15 x64 Thread Safe (2018-Jan-31 23:18:51)

    Извлеките содержимое ZIP-файла — php-7.3.8-Win32-VC15-x64.zip
    и перепишите в, предварительно созданный на диске C:/, каталог — php7 (C:/php7/) .

    Установка PHP 7 закончена!

    Откройте в программе «Блокнот» один из файлов php.ini-development или php.ini-production.

    и сохраните его как php.ini

    Перейдите в папку PHP7 и отредактируйте файл php.ini.

    Найдите директиву
    ; On windows: extension_dir

    измените её, введя полный путь к каталогу ext, в котором находятся загружаемые расширения (модули)
    и запишите после ; extension_dir = «ext»

    Включить расширения. Это будет зависеть от библиотек, которые вы хотите использовать, но следующие расширения должны быть пригодны для большинства приложений (удалите комментария — точку с запятой):

    Старт Панель управления Все элементы панели управления Система

    Дополнительные параметры системы

    Нажмите кнопку ‘Переменные среды

    Найдите строку, содержащую переменную PATH
    Дважды щелкните на ней мышью

    Допишите в конец строки путь к каталогу PHP 7 — C:php7

    Нажмите OK

    Сохраните изменения и перезагрузите компьютер.

    Панель управления — Все элементы панели управления — Система

    Нажмите на ссылку — Дополнительные параметры системы.

    В окне диалога — Свойства системы нажмите кнопку — Переменные среды.

    В окне — Переменные среды выделите строку Path и нажмите кнопку — Изменить.

    Нжмите на кнопку Создать

    Введите путь к каталогу PHP 7 — C:php7

    Добавлена переменная среды — путь к каталогу PHP 7 — C:php7

    Замечание: Не забудьте перезагрузиться после описанных выше действий и, после перезагрузки, проверить, что переменная PATH содержит нужный путь.

    В некоторых устаревших руководствах PHP предлагается поместить исполняемые файлы в системный каталог Windows потому, что ( C:Windows , C:WINNT , и т.д..) по умолчанию заданы в переменной окружения PATH . Но на данный момент это не рекомендуется, поскольку может вызвать разнообразные проблемы.

    Убедитесь, что вы можете запустить PHP из командной строки Windows
    введя — cd c:/php7/ и, затем — php -v

    Администратор: Командная строка

    Список загруженных модулей — php -m

    Администратор: Командная строка

    Проверка установки PHP

    PHP работа с консолью — выполнить скрипт php из консоли

    Чтобы передать PHP-код напрямую в командной строке,
    введите — cd c:/php7/, затем — php -r phpinfo();

    Администратор: Командная строка

    В файле error.log

    Выполнение PHP-файлов

    Страница, содержащая код PHP, должна иметь расширение — php .

    Создайте файл с именем phpinfo.php, добавьте в него этот код:

    И сохраните его в корне диска C:/

    Указание конкретного файла для запуска.
    введите — cd c:/php7/
    затем — php C:/phpinfo.php или — php -f C:/phpinfo.php
    И вы получите такой-же результат, что приведён выше.

    Ключевые изменения, внесенные в PHP

    Добавлены следующие INI-директивы:

    • user_ini.filename и user_ini.cache_ttl для контроля пользовательских INI-файлов.
    • Добавлена директива exit_on_timeout. Она служит для принудительного завершения дочерних процессов Apache 1.x в случае тайм-аута при выполнении PHP-кода.
    • Добавлена директива mbstring.http_output_conv_mimetype. Она указывает шаблон регулярного выражения для типов контента, для которых активируется функция mb_output_handler().
    • Добавлена request_order. Позволяет контролировать, какая внешняя переменная будет доступна в массиве $_REQUEST.

    Следующие INI-директивы получили новые значения по умолчанию:

    Ссылка на основную публикацию