Php ini windows extensions

Содержание
  1. Php ini windows extensions
  2. 1. Укажите PHP (Apache) где находится php.ini (только для Apache 2.x)
  3. Примечание
  4. Вывод конфигурационной информации PHP
  5. Примечание
  6. 2. Настройте в PHP.INI директиву extension_dir
  7. 3. Подключите расширение для работы с MySQL
  8. 4. Скопируйте дополнительную библиотеку libmysql.dll в c:/windows
  9. 5. Перезагрузите Apache
  10. 6. Проверьте установку расширения
  11. Проверка взаимодействия PHP c MySQL
  12. 1. Проверьте запущен ли у Вас сервер MySQL.
  13. 2. Выполните проверочный php-скрипт
  14. PHP-скрипт, проверяющий взаимодействие PHP с сервером MySQL
  15. Ошибки при подключении расширения для работы с MySQL
  16. Ошибки вида: Call to undefined function
  17. Нет блока MySQL в phpinfo()
  18. Примечание
  19. Чистая страница проверочного скрипта
  20. PHP-скрипт, проверяющий взаимодействие PHP с сервером MySQL
  21. Ошибка: Can’t connect to MySQL server on ‘127.0.0.1’ (10061)
  22. Ошибка: Access denied for user ‘root’@’localhost’ (using password: YES)
  23. Установка расширений PHP в ОС Windows
  24. Php ini windows extensions
  25. Where to find an extension?
  26. Which extension to download?
  27. Php ini windows extensions
  28. Языковые опции
  29. Ограничения ресурсов
  30. Настройка производительности
  31. Обработка данных

Php ini windows extensions

В данной статье приводится последовательность действия, которые необходимо выполнить для подключения к PHP расширения для работы с MySQL. Данная методика не зависит от используемых версий MySQL, PHP и Apache. Существующие отличия, в работе различных версий данных программ, как правило, указаны в примечаниях.

Процесс установки сервера Apache и подключения к нему PHP описывается в статьях:

По умолчанию, расширение для работы с MySQL (библиотека php_mysql.dll) не подключено к PHP и соответствующие функции недоступны. Для подключения библиотеки необходимо внести изменения в конфигурационный файл php.ini и скопировать дополнительные библиотеки в директорию c:/windows/system32.

1. Укажите PHP (Apache) где находится php.ini (только для Apache 2.x)

Если вы используете Apache версии 2 и выше, то обязательно добавьте в конфигурационный файл Apache (httpd.conf) директиву PHPIniDir, которая позволяет точно указать месторасположение файла php.ini. После добавления директивы перезагрузите Apache и удостоверьтесь, что запуск прошел успешно.

Примечание

Обратите внимание, что при записи пути используются прямые слеши /, что нехарактерно для Windows, в которой используются обратные слеши \\. Дело в том, что и Apache и PHP изначально были созданы для работы на unix-системах, где используются именно прямые слеши. Во избежание возможных трудно-диагностируемых проблем настоятельно рекомендуем использовать в конфигурационных файлах Apache и PHP прямые слеши в unix-формате.

Здесь подразумевается, что конфигурационный файл php.ini хранится в директории c:/php. Чтобы окончательно удостовериться, что Apache нашел конфигурационный файл php.ini выполните функцию phpinfo().

Вывод конфигурационной информации PHP

Найдите в полученных фиолетовых таблицах значение строки «Configuration File (php.ini) Path». В ней должен быть указан путь к используемому файлу php.ini, включая сам файл. Если в этой строке указана только директория, то это значит, что Apache не смог найти файл php.ini.

C:/php/php.ini // Правильно – php.ini найден и используется
C:/windows/ // Неправильно – php.ini не обнаружен

Примечание

В Apache более ранних версий директивы PHPIniDir не было и вследствие этого возникало очень много ошибок, связанных с неправильным расположением файла php.ini. Для Apache версии 1.3 php.ini обязательно должен быть расположен в системной директории Windows, обычно: c:/Windows. Использование директивы PHPIniDir в Apache версии 2 позволяет кардинально решить данную проблему.

После того, как Вы удостоверились, что Apache использует правильный php.ini можно приступать к его редактированию для подключения расширения работы с MySQL.

2. Настройте в PHP.INI директиву extension_dir

Директива extension_dir указывает директорию, в которой располагаются библиотеки расширений php, в том числе и библиотека php_mysql.dll. Если вы установили php в директорию c:/php, то библиотеки расширений, как правило, располагаются в поддиректорию ext (c:/php/ext). Проверьте так ли это и установите правильное значение директивы extension_dir.

3. Подключите расширение для работы с MySQL

Для этого найдите в php.ini строчку:

И снимите с нее символ комментария – точку с запятой.

4. Скопируйте дополнительную библиотеку libmysql.dll в c:/windows

Если PHP у Вас подключен к Apache в качестве модуля, то для подключения расширения MySQL необходимо скопировать дополнительную библиотеку libmysql.dll из директории c:/php в директорию c:/windows/system32. Если php подключен к Apache, как CGI-приложение, то копирования дополнительной библиотеки не требуется.

5. Перезагрузите Apache

Чтобы все внесенные изменения вступили в силу перезагрузите Apache.

6. Проверьте установку расширения

Чтобы удостовериться, что библиотека для работы с MySQL успешно подключилась к PHP выполните функцию phpinfo(). Просмотрите «фиолетовые таблицы» и найдите в них раздел с именем MySQL. Если такой раздел существует, то значит, что расширение успешно подключилось.

Проверка взаимодействия PHP c MySQL

1. Проверьте запущен ли у Вас сервер MySQL.

Перед тем, как приступить к проверке взаимодействия PHP c MySQL убедитесь, что сервер MySQL у Вас работает. Это можно сделать, открыв список служб Windows: «Пуск» | «Панель Управления» | «Администрирование» | «Службы». Найдите службу с именем MySQL и убедитесь, что она находится в состоянии работы (третий столбец таблицы).

Второй способ убедится, что сервер MySQL работает: нажмите кнопки «Crtl» + «Alt» + «Del» и на вкладке «Процессы» найдите процесс с именем mysqld.exe. Вместо процесса mysqld.exe также могут работать процессы: mysqld-nt.exe, mysqld-max-nt.exe, mysqld-debug.exe.

2. Выполните проверочный php-скрипт

PHP-скрипт, проверяющий взаимодействие PHP с сервером MySQL

= «127.0.0.1» ;
$dbname = «test» ;
$dbuser = «root» ;
$dbpasswd = «» ;

$dbcnx = mysql_connect ( $dblocation , $dbuser , $dbpasswd );
if (! $dbcnx )
<
echo «

Читайте также:  Надо ли выключать брандмауэр windows 10

К сожалению, не доступен сервер mySQL

» ;
exit();
>
if (! mysql_select_db ( $dbname , $dbcnx ) )
<
echo «

К сожалению, не доступна база данных

» ;
exit();
>
$ver = mysql_query ( «SELECT VERSION()» );
if(! $ver )
<
echo «

Ошибка в запросе

Если тест прошел успешно, то на экран будет выведен номер версии сервера MySQL. В противном случае, на экран будут выведены описания произошедших ошибок.

Ошибки при подключении расширения для работы с MySQL

Ошибки вида: Call to undefined function

Все ошибки содержащие фразу «Call to undefined function» указывают, на неподключенное расширение PHP. Если такие ошибки возникают при работы с фунциями MySQL, то это значит, что не подключена библиотека PHP для работы с MySQL – php_mysql.dll

Пример сообщения об ошибках:

Fatal error: Call to undefined function mysql_connect()
in C:\www\panel\htdocs\test.php on line 7

Для решения этой проблемы обратитесь к началу статьи.

Нет блока MySQL в phpinfo()

Если все сделано правильно, но расширение для работы с MySQL не подключается и даже отсутствует блок MySQL в выводе функции phpinfo(), то проверьте версию библиотеки libmysql.dll, расположенную в c:/windows/system32.

  1. Сравните размер библиотеки libmysql.dll, которая находится в c:/windows/system32 с размером одноименной библиотеки, которая установилась вместе с PHP. Они должны быть равны.
  2. Проведите библиотеки libmysql.dll по директории c:/windows и всем поддиректориям. Удалите все найденные дубли и оставьте только одну нужную библиотеку – ту, которая была скопирована из директории c:/php.

Примечание

Одноименная библиотека libmysql.dll поставляется также вместе с сервером MySQL. Однако, это разные библиотеки и если в директории c:/windows/system32 будет лежать именно библиотека от MySQL, то PHP не сможет подключить расширение. Библиотека libmysql.dll может быть автоматически скопирована в c:/windows/system32 при установке сервера MySQL. Наличие в системной директории библиотека от старой версии PHP также может стать препятствием.

Чистая страница проверочного скрипта

В качестве скрипта для проверки взаимодействия PHP c MySQL на нашем сайте часто используется скрипт, приведенный в листинге ниже. Его отличия от аналогичного php-скрипта, приведенного в начале статьи, – символы @ перед вызовом функций mysql_connect() и mysql_select_db(). Эти символы используются для подавления вывода ошибок в браузер. Их полезно применять на работающем сайте в Интернете чтобы предотвратить вывод в браузер конфиденциальной информации, но при отладке скриптов запрет вывода ошибок не нужен, т.к. он может затруднить диагностику проблемы.

PHP-скрипт, проверяющий взаимодействие PHP с сервером MySQL

= «127.0.0.1» ;
$dbname = «test» ;
$dbuser = «root» ;
$dbpasswd = «» ;

$dbcnx = @ mysql_connect ( $dblocation , $dbuser , $dbpasswd );
if (! $dbcnx )
<
echo «

К сожалению, не доступен сервер mySQL

» ;
exit();
>
if (!@ mysql_select_db ( $dbname , $dbcnx ) )
<
echo «

К сожалению, не доступна база данных

» ;
exit();
>
$ver = mysql_query ( «SELECT VERSION()» );
if(! $ver )
<
echo «

Ошибка в запросе

Если в результате выполнения данного скрипта выводится чистая страница, то, как правило, это значит, что к PHP не подключена библиотека php_mysql.dll. Чтобы более точно диагностировать проблему проведите следующую последовательность действий.

  1. Убедитесь, что выполняются другие PHP-скрипты, не использующие базу данных MySQL.
  2. Уберите символ @ перед вызовом функции mysql_connect и mysql_select, который используется для подавления вывода ошибок в браузер. После этого в браузер будет выдана более полная информация об ошибках, что поможет решению проблемы.

Ошибка: Can’t connect to MySQL server on ‘127.0.0.1’ (10061)

Если при выполнении проверочного php-скрипта выдается ошибка подобная следующей:

Warning: mysql_connect() [function.mysql-connect]:
Can’t connect to MySQL server on ‘127.0.0.1’ (10061)
in C:\www\panel\htdocs\test.php on line 7

Это свидетельствует о том, что не работает сервер базы данных MySQL. Более точная диагностика этой проблемы приведена выше в пункте 1 подраздела «Проверка взаимодействия PHP c MySQL».

Ошибка: Access denied for user ‘root’@’localhost’ (using password: YES)

Наличие следующей ошибки:

Warning: mysql_connect() [function.mysql-connect]:
Access denied for user ‘root’@’localhost’ (using password: YES)
in C:\www\panel\htdocs\test.php on line 7

Свидетельствует о том, что Вы пытаетесь подключиться к базе данных MySQL c неправильным паролем. Проверьте значение переменной $dbpasswd в проверочном скрипте. По умолчанию сервер MySQL устанавливается с пустым паролем пользователя root. Если Вы самостоятельно установили пользователю root пароль, то пропишите его в переменную $dbpasswd проверочного скрипта.

Установка расширений PHP в ОС Windows

После установки PHP и веб-сервера на ОС Windows может понадобиться установить некоторые расширения для добавления функционала. Вы можете выбрать, какие расширения будут загружаться при старте PHP, модификацией вашего файла php.ini . Также вы можете загружать расширения динамически в ваших скриптах, используя функцию dl() .

Библиотеки DLL расширений PHP имеют префикс php_.

Многие расширения встроены в Windows-версию PHP. Это значит, что дополнительные DLL-файлы и директива extension не используются для загрузки данных расширений. Таблица расширений PHP в Windows, содержащая список расширений, требующих (или обычно требующих) дополнительные DLL-файлы. Ниже приведен список встроенных расширений (обновлено PHP 5.0.4): BCMath, Caledar, COM, Ctype, DOM, FTP, LibXML, Iconv, ODBC, PCRE, Session, SimpleXML, SPL, SQLite, WDDX, XML и Zlib.

Место по умолчанию, в котором PHP ищет расширения — C:\php5 . Для изменения данной настройки согласно вашей установке PHP отредактируйте файл php.ini следующим образом:

измените опцию extension_dir так, чтобы она указывала на директорию, в которой расположены расширения или в которую вы поместили файлы php_*.dll . Например:

Включите одно или несколько расширений, которые вы хотите использовать, раскомментировав в файле php.ini строки вида extension=php_*.dll. Это делается удалением символа «;» в начале строки для каждого расширения, которое вы хотите включить.

Читайте также:  Dcp 7030 драйвер для windows 10

Пример #1 Включение расширения Bzip2 в PHP-Windows

Некоторые расширения для своей работы требуют дополнительные библиотеки DLL. Несколько из них находятся в распространяемом дистрибутиве PHP, в в корневой директории, но некоторые расширения, например, Oracle ( php_oci8.dll ), требуют наличия библиотек DLL, не включаемых в дистрибутив PHP. Не забудьте включить директорию C:\php в системную переменную PATH (данный процесс описан в отдельном разделе помощи).

Некоторые из этих библиотек DLL не поставляются в дистрибутиве PHP. За деталями обратитесь к странице документации конкретного расширения. Также прочтите раздел руководства Установка расширений PECL, чтобы узнать дополнительную информацию о PECL . Все большее число расширений PHP можно найти в PECL , и данные расширения требуют отдельной загрузки.

Php ini windows extensions

On Windows, you have two ways to load a PHP extension: either compile it into PHP, or load the DLL. Loading a pre-compiled extension is the easiest and preferred way.

To load an extension, you need to have it available as a «.dll» file on your system. All the extensions are automatically and periodically compiled by the PHP Group (see next section for the download).

To compile an extension into PHP, please refer to building from source documentation.

To compile a standalone extension (aka a DLL file), please refer to building from source documentation. If the DLL file is available neither with your PHP distribution nor in PECL, you may have to compile it before you can start using the extension.

Where to find an extension?

PHP extensions are usually called «php_*.dll» (where the star represents the name of the extension) and they are located under the «PHP\ext» folder.

PHP ships with the extensions most useful to the majority of developers. They are called «core» extensions.

However, if you need functionality not provided by any core extension, you may still be able to find one in » PECL. The PHP Extension Community Library (PECL) is a repository for PHP Extensions, providing a directory of all known extensions and hosting facilities for downloading and development of PHP extensions.

If you have developed an extension for your own uses, you might want to think about hosting it on PECL so that others with the same needs can benefit from your time. A nice side effect is that you give them a good chance to give you feedback, (hopefully) thanks, bug reports and even fixes/patches. Before you submit your extension for hosting on PECL, please read » PECL submit.

Which extension to download?

Many times, you will find several versions of each DLL:

  • Different version numbers (at least the first two numbers should match)
  • Different thread safety settings
  • Different processor architecture (x86, x64, . )
  • Different debugging settings
  • etc.

You should keep in mind that your extension settings should match all the settings of the PHP executable you are using. The following PHP script will tell you all about your PHP settings:

Php ini windows extensions

Этот список включает встроенные директивы php.ini , которые вы можете использовать для настройки PHP. Директивы, которые обрабатываются модулями, перечислены и подробно описаны на страницах документаций соответствующих модулей. К примеру, информация о директивах сессий может быть найдена на странице документации сессий.

Представленные здесь значения по умолчанию используются в случае, если не был подключён php.ini ; значения для боевого php.ini и для разработки могут различаться.

Языковые опции

Опции языка и прочих настроек

Имя По умолчанию Место изменения Список изменений
short_open_tag «1» PHP_INI_PERDIR
precision «14» PHP_INI_ALL
serialize_precision «-1» PHP_INI_ALL До версии PHP 7.1.0 значение по умолчанию было равно 17.
disable_functions «» Только PHP_INI_SYSTEM
disable_classes «» Только php.ini
exit_on_timeout «» PHP_INI_ALL
expose_php «1» Только php.ini
hard_timeout «2» PHP_INI_SYSTEM Доступна с версии PHP 7.1.0.
zend.exception_ignore_args «0» PHP_INI_ALL Доступна с версии PHP 7.4.0
zend.multibyte «0» PHP_INI_ALL
zend.script_encoding NULL PHP_INI_ALL
zend.detect_unicode NULL PHP_INI_ALL
zend.signal_check «0» PHP_INI_SYSTEM
zend.assertions «1» PHP_INI_ALL с ограничениями

Краткое разъяснение конфигурационных директив.

Определяет, разрешается ли короткая форма записи ( ) тегов PHP. Если вы хотите использовать PHP совместно с XML, вы можете отключить эту опцию, чтобы беспрепятственно использовать . В противном случае, вы можете отобразить это при помощи PHP, например: ‘; ?> . Если же эта опция отключена, вы должны использовать длинную форму открывающего тега PHP ( ).

Эта директива не влияет на сокращение , которое всегда доступно.

Выдаёт факт присутствия PHP на сервере, включая передачу версии PHP в HTTP-заголовке (например, X-Powered-By: PHP/5.3.7).

Эта директива позволяет отключить некоторые функции. Она принимает список имён функций, разделённый запятыми.

Только внутренние функции могут быть отключены с помощью этой директивы. Пользовательские функции ей не подвержены.

Эта директива должна быть установлена в php.ini . Например, её нельзя использовать в httpd.conf .

disable_classes string Эта директива позволяет отключить некоторые классы. Она принимает список имён классов, разделённых запятыми. Эта директива должна быть установлена в php.ini . Например, её нельзя использовать в httpd.conf . zend.assertions int Если задано значение 1 , проверочный код будет исполняться (режим разработки). Если задан 0 , код проверок будет сгенерирован, однако исполняться не будет. Если задано -1 , проверочный код не будет генерироваться (продуктивный режим).

Если процесс стартован в режиме релиза, zend.assertions не может быть изменён во время выполнения, так как код утверждений не генерируется.

Если процесс стартован в режиме разработки, zend.assertions не может быть выставлен в -1 во время выполнения..

Когда истечёт время ожидания, установленное в max_execution_time, среда выполнения PHP аккуратно отключит ресурсы. Если во время этого что-то застрянет, время ожидания будет установлено на указанное количество секунд. Когда истечёт жёсткое время ожидания, PHP завершит работу с ошибкой. Если установлено значение 0, жёсткое время ожидания никогда не активируется.

Когда PHP останавливается после жёсткого времени ожидания, это будет выглядеть примерно так:

Исключает аргументы из трассировки стека, сгенерированных из исключений.

Разрешает парсинг исходных файлов в многобайтных кодировках. Включение zend.multibyte требуется для использования кодировок символов подобных SJIS, BIG5 и т.д., содержащих специальные символы в многобайтных строковых данных. Совместимые с ISO-8859-1 кодировки, например UTF-8, EUC и т.д., не требуют эту опцию.

Модуль zend.multibyte требует установленного модуля «mbstring».

Данное значение будет использовано, только при отсутствии директивы declare(encoding=. ) в начале скрипта. При использовании кодировок несовместимых с ISO-8859-1, нужно использовать опции и zend.multibyte и zend.script_encoding.

Литеральные строки должны быть транслитерированы из zend.script_enconding в mbstring.internal_encoding, как если бы вызвали mb_convert_encoding() .

Определяет, нужно ли проверять BOM (Byte Order Mark, метка порядка байт) и корректность многобайтных символов в файле. Эта проверка производится до вызова __halt_compiler() . Доступна только в режиме Zend Multibyte.

Определяет, нужно ли проверять заменённые обработчики сигналов при завершении скрипта.

Эта директива только для Apache1 mod_php, которая заставляет потомка Apache завершиться, если произошёл тайм-аут исполнения скрипта PHP. Такой тайм-аут приводит к внутреннему вызову longjmp() в Apache1, который оставляет некоторые расширения в несогласованном состоянии. По завершении процесса все неснятые блокировки или память будут очищены.

Ограничения ресурсов

Ограничения ресурсов

Имя По умолчанию Место изменения Список изменений
memory_limit «128M» PHP_INI_ALL

Краткое разъяснение конфигурационных директив.

Эта директива задаёт максимальный объем памяти в байтах, который разрешается использовать скрипту. Это помогает предотвратить ситуацию, при которой плохо написанный скрипт съедает всю доступную память сервера. Для того, чтобы убрать ограничения, установите значение этой директивы в -1 .

Если используется int , значение измеряется байтами. Вы также можете использовать сокращённую запись, которая описана в этом разделе FAQ.

Настройка производительности

Настройка производительности

Имя По умолчанию Место изменения Список изменений
realpath_cache_size «4M» PHP_INI_SYSTEM До PHP 7.0.16 и 7.1.2, по умолчанию было «16K»
realpath_cache_ttl «120» PHP_INI_SYSTEM

Использование open_basedir отключит кеш realpath.

Краткое разъяснение конфигурационных директив.

Определяет размера кеша realpath, используемого в PHP. Это значение должно быть увеличено на системах, в которых PHP открывает большое количество файлов соответственно количеству выполняемых файловых операций.

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

Размер, необходимый для кеширования, зависит от системы.

Время (в секундах) в течение которого будет использован кеш realpath для указанного файла или директории. Для систем с редко меняющимися файлами это значение можно увеличить.

Обработка данных

Конфигурационные опции обработки данных

Имя По умолчанию Место изменения Список изменений
arg_separator.output «&» PHP_INI_ALL
arg_separator.input «&» PHP_INI_PERDIR
variables_order «EGPCS» PHP_INI_PERDIR
request_order «» PHP_INI_PERDIR
auto_globals_jit «1» PHP_INI_PERDIR
register_argc_argv «1» PHP_INI_PERDIR
enable_post_data_reading «1» PHP_INI_PERDIR Доступна с версии PHP 5.4.0
post_max_size «8M» PHP_INI_PERDIR
auto_prepend_file NULL PHP_INI_PERDIR
auto_append_file NULL PHP_INI_PERDIR
default_mimetype «text/html» PHP_INI_ALL
default_charset «UTF-8» PHP_INI_ALL
input_encoding «» PHP_INI_ALL
output_encoding «» PHP_INI_ALL
internal_encoding «» PHP_INI_ALL

Краткое разъяснение конфигурационных директив.

Этот разделитель используется в генерируемых PHP URL в качестве разделителя аргументов.

Список разделителей, используемых PHP для получения переменных из URL.

Каждый символ в этой директиве считается разделителем!

Устанавливает порядок обработки переменных EGPCS ( E nvironment, G et, P ost, C ookie, и S erver). Например, если variables_order установлена в «SP» , то PHP создаст superglobals $_SERVER и $_POST , но не будет создавать $_ENV , $_GET и $_COOKIE . Установка в «» означает, что ни одна superglobals не будет установлена.

В CGI и FastCGI SAPI, в $_SERVER также добавляются значения переменных окружения; S всегда эквивалентна ES вне зависимости от самого положения E в этой директиве.

Эта директива также влияет на содержимое и порядок переменной $_REQUEST .

Эта директива регулирует порядок, в котором PHP добавляет переменные GET, POST и Cookie в массив _REQUEST. Добавление производится слева направо, новые значения перезаписывают старые.

Если значение этой директивы не установлено, то используется значение директивы variables_order для содержимого переменной $_REQUEST .

Учтите, что файлы php.ini , поставляемые с дистрибутивом, по соображениям безопасности не содержат значение ‘C’ (cookies).

Когда включено, переменные SERVER, REQUEST и ENV создаются в тот момент, когда они впервые используются (Just In Time), а не в начале выполнения скрипта. Если эти переменные в скрипте не используются, включение этой директивы приведёт к росту производительности.

Использование переменных SERVER, REQUEST и ENV проверяется на стадии компиляции, поэтому их использование с помощью, например, переменных переменных не запустит их инициализацию.

Читайте также:  Поменять пароль для пользователя линукс
Оцените статью