sonyps4.ru

Установка PHP. Установка Apache, PHP, MySQL

Если спросить веб-программиста, какой из всех файлов дистрибутива PHP является самым главным, многие могут ответить, что сам интерпретатор, библиотеки, расширения и т. д. Нет, самый важный файл — это php.ini: небольшой текстовый файлик, в котором содержатся все настройки РНР (директивы), конфигурации модулей расширения и переменные среды. Через файл конфигурации можно настроить РНР на максимальное быстродействие, отключить потенциально опасные функции и модули, ну и, конечно, при неудачной настройке нарушить работу всей системы (нет, не всего сервера, максимум веб-сервера и РНР).

Но значение системных переменных можно установить не только через php.ini, но и другии методами, правда, с ограничениями. Для понимания этого следует вкратце рассмотреть механизм обработки конфигурационных файлов средой РНР.

Во первых, в самом простом случае, когда РНР работает как CGI-приложение, файл перечитывается каждый раз при запуске интерпретатора. Если же он подключается как SAPI-модуль к серверу Apache, то тогда путь к файлу определяется директивой PHPIniDir конфигурации сервера.

Если после этого конфигурационный файл не найден, его поиски продолжаются в следующих местах: для Win32-сервера проверяется ключ в реестре HKEY_LOCAL_MACHINE\SOFTWARE\PHP\IniFilePath, далее файл ищется в текущем каталоге, откуда запущен интерпретатор (php-cli.exe), в корневой директории веб-сервера (для SAPI-модуля) или в корневой директории РНР. Потом поиск продолжается в системных директориях (C:\WINDOWS, C:\WINXP, C:\SYSTEM32) и в директории, заданной на этапе сборки РНР опцией "--with-config-file-path".

Кроме этого, сами опции могут указыватся в разных файлах, к примеру в файлах конфигурации сервера Apache (httpd.conf), в файлах.htaccess (для отдельных директорий сайта), в отдельных файлах php.ini, помещаемых в директории со скриптами, и даже в самих РНР-скриптах через вызов функции ini_set(). В зависимости от того, где и каким образом устанавливается переменная, она будет иметь различный эффект – для текущего скрипта, для отдельного сайта или директории, для всего сервера до перезагрузки.

Для чего такое разнообразие? Очень просто. К примеру, в типичной ситуации, когда ваш сайт располагается на виртуальном хостинге, вы лишены возможности перенастроить конфигурацию РНР для себя, в то же время для нормальной работы скриптов вам необходимо установить некоторые переменные, отличные от установок хостера. Тогда вы просто устанавливаете в директориях своего сайта файл php.ini, в котором и прописываете все нужные вам настроки. Если же необходимо изменить всего одну-две переменные, то это можно сделать через вызов функции ini_set() в начале скрипта. Но обратите внимание на один момент. Так как ini_set() является РНР-функцией и, соответственно, исполняется уже после инициализации интерпретатора, то некоторые установки будут проигнорированы, так как влияют на работу только в начальном этапе запуска РНР. Не переживайте, такие параметры, как и ошибочные (синтаксически) неверные, будут просто проигнорированы и не приведут к каким-либо последствиям в работе.

Приведем практический пример. Есть такая директива, error_reporting , которая указывает на степень детализации вывода сообщений про ошибки в ходе интерпретации РНР-скрипта. Ее можно настроить на вывод как всех сообщений, так и просто предупреждений, не влияющих на работу программы. Вы можете для себя перенастроить ее, к примеру, разрешая показывать только критические для выполнения ошибки. В таком случае переменная должна содержать значение "E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR" – то есть выводить ошибки компилятора, критические ошибки среды и ядра. Установить переменную можно с помощью вызова функции ini_set(), которая принимает два строковых параметра: первая строка описывает название опции, а вторая – новое значение. В нашем случае это: ini_set("error_reporting", "E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR"); . Вот и все, в результате РНР будет при каждом запуске вашего скрипта использовать новое значение переменной error_reporting, для всех остальных же пользователей останется значение по умолчанию, описанное в php.ini.

Прежде чем замещать переменную среды, желательно проверить ее текущее значение – это делается с помощью вызова функции ini_get() , которая принимает один параметр, строку с именем переменной, и возвращает строку с ее текущим значением. В нашем примере код echo ini_get("error_reporting"); вернет E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR, то есть только что установленное значение, в то же время, если вызвать ini_get() до установки нового значения, мы получим что-то вроде E_ALL & ~E_NOTICE (на разных хостингах может отличатся) – выводить сообщения про все ошибки, исключая предупреждения.

Но, перед тем как устанавливать переменные, желательно ориентироватся в структуре файла php.ini и в доступных параметрах. На эту тему мало информации, кроме комментариев в самом php.ini, так что мы постараемся подробно описать самые важные переменные, с которыми вам предстоит иметь дело.

Общая структура файла php.ini очень простая. Делится весь файл на секции, каждая секция группирует переменные, относящиеся к какому-либо модулю или всей среде РНР в целом. В каждой секции переменные (директивы) задаются в виде имя_переменной=значение , где значение может быть как произвольной строкой (если она содержит пробелы, то заключается в двойные кавычки), так и значением Оn/Оff (тогда такую переменную называют еще флагом). Переменные задаются по одной в строке, а все строки, которые начинаются со знака "; ", воспринимаются как комментарии и не обрабатываются. Помните, что имена директив чувствительны к регистру и в основном пишутся строчными буквами.

Название секции заключается в квадратные скобки. К примеру, первой идет секция общих установок среды – . Секция модуля ODBC для связи с базами данных имеет название , настройки доступа к MySQL производятся в секции , а новый интерфейс MySQLI настраивается в , параметры сессий указываются в секции . Каждая секция, исключая общесистемную, соответствует какому-либо расширению, если оно, конечно, нуждается в настройке.

Пока начнем с директив, описываемых в секции . Мы будем рассматривать конфигурацию РНР версии 5.0.х, так что, если у вас более ранняя версия, некоторые директивы могут отсутствовать.

engine = — флаг, разрешающий работу РНР на сервере Apache. По умолчанию она всегда установлена в значение On.

zend.ze1_compatibility_mode = — директива появилась в РНР 5.0 и позволяет переключиться в режим совместимости со скриптами, написанными для предыдущих версий. Если вы настраиваете РНР под себя и вам не надо поддерживать совместимость, установите флаг в Off, если же РНР настраивается для общего сервера, то логично позволить пользователям запускать все скрипты, написанные с учетом ядра Zend I (PHP 4.х).

short_open_tag = — РНР умеет распознавать несколько различных тегов начала и конца блока программы. Этот флаг разрешает применять короткую запись вида .

precision = — указывает, сколько значащих цифр должен учитывать РНР при операции с дробными числами. По умолчанию используется 12 знаков, чего вполне достаточно.

output_buffering = — разрешает буферизацию вывода для всех страниц или устанавливает размер буфера в байтах (если значение – целое число, к примеру 4096, устанавливает размер буфера в 4 Кб). Применяется для временной буферизации HTTP-заголовков и cookie перед отсылкой клиенту остального контента.

output_handler = — позволяет указать функцию для перенаправления всего вывода страницы. Одновременно, если задана функция, включается директива output_buffering. Можно использовать для перекодировки генерируемого контента, сжатия, кеширования или другой пост-обработки. Если директива не используется, присвойте ей пустое значение (пустую строку или значение none).

safe_mode = — переключает РНР в специальный защищенный режим работы, который имеет повышенную безопасность, но и накладывает ограничения на программирование. Может быть очень полезно при создании систем с повышенной защищенностью. С этой директивой связано еще несколько других с названием, начинающимся с safe_mode_, задающих конкретные ограничения и дополнительные проверки. По умолчанию директива имеет значение Off.

disable_functions = — задает перечень функций, использование которых запрещено в пользовательских скриптах. Может применяться для дополнительного обеспечения безопасности, блокируя потенциально опасные функции (например, системные вызовы). Для задания функций перечислите их в двойных кавычках через запятую. Например, «exec,php_info,file,ini_set» запрещает вызовы функций exec(), php_info(), file(), ini_set(). Но устанавливать эту директиву можно только до инициализации РНР, то есть в файле php.ini или httpd.conf.

max_execution_time = — указывает время в секундах, в течение которого можно исполнять один скрипт. При превышении лимита исполнение скрипта принудительно завершается с ошибкой. Это может пригодиться для принудительной остановки неправильно написанных программ, которые будут мешать нормальной работе сервера. В то же время не следует устанавливать слишком маленькое время, так как в случае работы с удаленными хостами, базами данных или файлами отведенное время может истечь до того, как скрипт отработает.

max_input_time = [-1/целое число] — указывает время в секундах, в течение которого скрипт может выводить данные. Желательно не устанавливать его меньше директивы max_execution_time. Если скрипт интенсивно выводит данные, к примеру в цикле что-то обрабатывает и выводит большие фрагменты текста, то директиве следует присваивать большие значения или же не устанавливать совсем – тогда единственным ограничением будет общее время исполнения скрипта. Директиву можно установить только через php.ini.

memory_limit = — устанавливает размер оперативной памяти, выделяемой для одного скрипта. Префикс М указывает, что размер указывается в мегабайтах, а К – Кб. Для публичного сервера (к примеру, виртуального хостинга) можно установить меньшее значение, но, если необходимо производить интенсивные вычисления или планируется запуск серьезных коммерческих программ, значение можно увеличить (зависит от размера RAM на сервере).

display_errors = — разрешает выводить пользователю сообщения про ошибки среды исполнения и предуприждения РНР. Я бы рекомендовал всегда включать эту директиву не только в режиме отладки, но и в реальной работе, а более точно настраивать детализацию вывода при помощи опции error_reporting.

error_reporting = [набор предопределенных констант] — указывает желательную детализацию сообщений про ошибки и сбои в работе интерпретатора.

Константы могут обьединяться при помощи битовых операторов сложения. Наиболее важные константы: E_ALL (все ошибки и предупреждения), E_COMPILE_ERROR (фатальные ошибки компилятора), E_CORE_ERROR (фатальные ошибки при инициализации ядра РНР), E_ERROR (фатальные ошибки этапа выполнения), E_PARSE (ошибки синтаксиса), E_NOTICE и E_WARNING (предупреждения на этапе выполнения, не критичные для работы скрипта).

Для отладки скрипта желательно установить максимальную детализацию сообщений, например error_reporting = E_ALL , в реальной работе желательно исключить предупреждения, не влияющие на работу, например error_reporting = E_COMPILE_ERROR|E_CORE_ERROR|E_ERROR покажет только фатальные ошибки (другой вариант: error_reporting = E_ALL & ~E_NOTICE & ~ E_WARNING ).


Прямая ссылка: php-5.3.10-Win32-VC9-x86.zip
Заодно скачайте сразу и документацию на русском языке в формате.chm, она вам понадобится при изучении и работе: php_enhanced_ru.chm

Распакуйте архив в желаемый каталог (изначально предлагается «C:\php»). Откройте конфигурационный файл содержащий рекомендуемые настройки — «php.ini-development» (находящийся в корне дистрибутива), переименуйте его в php.ini и произведите следующие изменения.

Редакция php.ini:

  1. Найдите строку:
    post_max_size = 8M
    Увеличьте до 16 Мбайт максимальный размер данных принимаемых методом POST, изменив ее на:
    post_max_size = 16M
  2. Найдите строку:
    ;include_path = «.;c:\php\includes»
    Раскомментируйте ее, убрав перед строкой символ точки с запятой.
    (Внимание исключение! Обратные косые черты при указании пути):
    include_path = «.;c:\php\includes»
    Создайте пустой каталог «C:\php\includes», для хранения подключаемых классов.
  3. Найдите строку:
    extension_dir = «./»
    Установите значением данной директивы путь к папке с расширениями:
    extension_dir = «C:/php/ext»
  4. Найдите строку:
    ;upload_tmp_dir =
    Раскомментируйте ее и укажите в значении следующий путь:
    upload_tmp_dir = «C:/php/upload»
    Создайте пустую папку «C:\php\upload», для хранения временных файлов загружаемых через HTTP.
  5. Найдите строку:
    upload_max_filesize = 2M
    Увеличьте максимально допустимый размер загружаемых файлов до 16 Мбайт:
    upload_max_filesize = 16M
  6. Подключите, расскомментировав, данные библиотеки расширений:
    extension=php_bz2.dll
    extension=php_curl.dll
    extension=php_gd2.dll
    extension=php_mbstring.dll
    extension=php_mysql.dll
    extension=php_mysqli.dll
  7. Найдите строку:
    ;date.timezone =
    Раскомментируйте и установите значением часовой пояс вашего местоположения (список часовых поясов можно найти в документации):
    date.timezone = «Europe/Moscow»
  8. Найдите строку:
    ;session.save_path = «/tmp»
    Раскомментируйте и установите значением данной директивы такой путь:
    session.save_path = «C:/php/tmp»
    Создайте пустую папку «C:\php\tmp» для хранения временных файлов сессий.

Сохраните изменения и закройте файл php.ini.

Далее необходимо добавить каталог с установленным PHP интерпретатором в PATH операционной системы. Для чего пройдите по пути «Start» («Пуск») -> «Control Panel» («Панель управления») -> «System» («Система»), откройте вкладку «Advanced» («Дополнительно»), нажмите кнопку «Environment Variables» («Переменные среды»), в разделе «System Variables» («Системные переменные») сделайте двойной щелчок на строке «Path», добавьте в поле «Variable Value» («Значение переменной»), к тому что там уже существует, путь к каталогу с установленным PHP, например, «C:\php» (без кавычек). Обратите внимание на то что символ точки с запятой разделяет пути. Чтобы внесенные изменения вступили в силу, перезагрузите операционную систему.

Пример строки Path:
%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\php;C:\Program Files\MySQL\MySQL Server 5.5\bin

Установка и настройка PHP интерпретатора – завершена.

Описание подключаемых библиотек:

php_bz2.dll – С помощью данного расширения PHP сможет создавать и распаковывать архивы в формате bzip2.

php_curl.dll – Очень важная и нужная библиотека, позволяющая соединяться и работать с серверами, с помощью огромного количества интернет-протоколов.

php_gd2.dll – Ещё одна незаменимая библиотека, позволяющая работать с графикой. Вы думали на PHP можно только HTML странички генерировать? А вот и нет! С помощью PHP можно почти всё, в том числе и рисовать.

php_mbstring.dll – Библиотека содержит функции для работы с много-байтными кодировками, к которым относятся кодировки восточных языков (японский, китайский, корейский), Юникод (UTF-8) и другие.

php_mysql.dll – Имя библиотеки говорит само за себя — она необходима для работы с сервером MySQL.

php_mysqli.dll – Данная библиотека является расширением предыдущей и содержит дополнительные функции PHP для работы с сервером MySQL версии 4.1.3 и выше.

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

Оригинал статьи: http://php-myadmin.ru/learning/instrument-php.html

А сегодня мы поговорим об установке PHP . Как и в случае с Apache здесь нет ничего сложного. Если вы первый раз занимаетестьустановкой и настройкой PHP на локальной машине, то вам будет полезно прочитать это руководство с картинками. Если вы уже матерый зубр в этих делах, то можете смело пропустить эту заметку.

Итак, если вы читаете этот пост, то либо вы первый раз устанавливаете PHP, либо у вас возникли вопросы/проблемы в процессе установки или настройки PHP. Я постараюсь как можно подробнее описать этот процесс.

Для начала нам нужен дистрибутив с самой свежей версией PHP. Его можно скачать с официального сайта – www.php.net (9.5 Mb).

Скачиваем дистрибутив на компьютер, выбирая зеркало, которое географически наиболее ближе к вам находиться

Извлекаем содержимое архива в папку C:/php5 . Опять же, если вы первый раз устанавливаете связку Apache -PHP- MySQL рекомендую устанавливать по указанным мной путям.

Итак, в C:/php5 у вас должно находиться следующее:

Установка PHP завершена, теперь займемся его настройкой.

Переименуйте файл php.ini-recommended в php.ini :

  • выбираем файл
  • нажимаем F2
  • удаляем -recommended
  • нажимаем Enter.

Теперь откроем файл в блокноте и займемся настройкой PHP . Файл содержит в себе довольно большое количество настроек PHP, но нам они сейчас не нужны. Мы займемся лишь базовой настройкой, которая позволит нам запустить PHP на локальной машине.

Немного о формате описания в файле настроек

Символ ‘;’ означает, что строки закоментированы (они не будут учитываться). Например:

; ignore_user_abort = On

Как вы могли заметить настройки поделены на группы, для удобства поиска по файлу. Например, настройки управления ограничением ресурсов:

;;;;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;;;;

max_execution_time = 30 ; Maximum execution time of each script, in seconds (Максимальное время выполнения скрипта).
max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M ; Maximum amount of memory a script may consume (128MB) (Максимальное количество выделяемой для скрипта памяти).

Формат описания параметров и их значений:

имя_переменной = ее_значение

Настройка модулей PHP.

Найдите секцию Dynamic Extensions (динамические расширения). Там представлен довольно большой список модулей для PHP:

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll

;extension=php_ming.dll
;extension=php_msql.dll
;extension=php_mssql.dll
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_pdo.dll

;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll

;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll

При подключении каждого модуля, он занимает определенное количество операционной памяти. Для работы мы подключим только те модули, которые нам точно понадобятся, а остальные, можно будет подключить по мере необходимости.

Для того чтобы подключить модуль нужно удалить перед строкой символ ‘;’. Тем самым мы раскомментируем строку и модуль будет использоваться.

Давайте подключим расширение PHP для работы с графикой – php_gd2.dll (оно нам понадобиться в будущем).

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

;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename.extension
;
; For example, on Windows:
;
; extension=msql.dll
;
; … or under UNIX:
;
; extension=msql.so
;
; Note that it should be the name of the module only; no directory information
; needs to go here. Specify the location of the extension with the
; extension_dir directive above.

; Windows Extensions
; Note that ODBC support is built in, so no dll is needed for it.
; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5)
; extension folders as well as the separate PECL DLL download (PHP 5).
; Be sure to appropriately set the extension_dir directive.

extension_dir=”C:/php5/ext”

;extension=php_bz2.dll
;extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_exif.dll
;extension=php_fdf.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_gmp.dll
;extension=php_ifx.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_msql.dll
;extension=php_mssql.dll
;extension=php_mysql.dll
;extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_pdo.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
;extension=php_pdo_sqlite.dll
;extension=php_pgsql.dll
;extension=php_pspell.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_soap.dll
;extension=php_sockets.dll
;extension=php_sqlite.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll

Сохраняем сделанные нами изменения. Чтобы сделанные нами настройки применились необходимо перезагрузить Apache .

Установка и настройка PHP завершена!

Как видите – ничего сложного. Если в процессе работы вам понадобятся другие расширения, просто раскомментируйте строку, с нужным вам расширением (аналогично с php_gd2.dll ) и перезагрузите Apache .

В следующем посте, я расскажу как заставить работать PHP и Apache в связке.



Загрузка...