Установка и настройка PHP. Пошаговая инструкция по настройке PHP на хостинге

Курс предназначен для базовой подготовки администраторов сайтов, созданных на "1С-Битрикс: Управление сайтом" . Изучив курс, вы освоите основные методы администрирования системы, а также пополните знания по темам, изученным в курсе Контент-менеджер .

Если вы добросовестно изучите курс, то научитесь:

  • управлять доступом к системе, сайтами, пользователями, группами пользователей;
  • работать с инструментами системы;
  • использовать возможности интерфейса по управлению системой;
  • работать с модулями "1С-Битрикс: Управление сайтом", связанными с оптимизацией и безопасностью работы сайта;
  • выполнять работу по конфигурированию веб-системы для оптимальной работы.

Если вам предстоит самостоятельная установка системы или перенос сайта на хостинг, то без курса Установка и настройка Курс Установка и настройка предназначен для специалистов устанавливающих "1С-Битрикс: Управление сайтом" или "Битрикс24 в коробке".

Вам не обойтись.

Необходимый минимум знаний для изучения курса:

  • базовые навыки компьютерной грамотности и навыков работы с ОС Windows;
  • базовые знания о WWW и организации доступа к веб-серверу;
  • знание системы в рамках курса Контент-менеджер Мы считаем, что вы этот курс уже прошли и знаете многое о Битриксе. Поэтому подсказок во всплывающих окнах будет намного меньше, чем в курсе Контент-менеджер. , чтобы банально не путаться в интерфейсе.

Неплохо было бы иметь базовые навыки установки и администрирования *nix-систем.

Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 3 дня (24 академических часа).

Экономите время и учитесь по дороге на работу или в ВУЗ? Используйте файл формата CHM, они открываются на любых устройствах. Программы для чтения доступны в AppStore и Play Market. Файлы формата CHM обновляются ежемесячно, тем не менее, возможно некоторое отставание их от онлайновой версии курса.

А сегодня мы поговорим об установке 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 в связке.

В этой статье мы рассмотрим установку и настройку Web-сервера Apache , PHP 5 и СУБД MySQL для использования их на локальной машине под операционной системой Windows (2000 и XP). Использование локальных серверов может понадобится по многим причинам – вам необходимо изучить PHP или MySQL, а тестирование своих Web-приложений на хостинге либо дорого обходится, либо такой возможности вообще нет. В этом случае вам понадобится связка Apache+PHP+MySQL на локальной машине.

Для начала необходимо раздобыть дистрибутивы серверов Apache и MySQL, а так же архив PHP. Мы будем устанавливать и настраивать Apache 2, MySQL 4 и PHP 5.

Так же можете скачать с нашего сайта файлы php.ini для настройки PHP и httpd.conf для Apache. Однако, делайте это только в крайнем случае - если у Вас ничего не получилось с "родными" файлами, которые появилиcь при установке приложений. Но в любом случае, их необходимо будет настроить под конкретную машину. Скачать php.ini и httpd.conf

Скачать Apache можно с зеркал приведённых на официальном сайте http://www.apache.org/dyn/closer.cgi . При поиске следует помнить, что Apache так же может называться httpd, по имени его демона в UNIX. На зеркалах обычно много различных файлов, например:
httpd-2.0.49-win32-src.zip - это архив с исходными кодами (src) для Windows (win32) Web-сервера Apache (httpd) версии 2.0.49.
httpd-2.0.49.tar.gz - тоже самое, но для Linux, в котором программы принято распространять в исходных кодах.
apache_2.0.50-win32-x86-no_ssl.exe - а вот это, откомпилированный под архитектуру (x86) для Windows (win32) без поддержки SSL(no_ssl) сервер Apache (apache) версии 2.0.50 - вот он и нужен.

Замечание

Бинарные коды дистрибутивов Apache распространяются в нескольких вариантах, как с расширением *.exe, так и *.msi и имеют название вида httpd_версия_win32_*_.msi.

Чтобы вам не мучатся, вот ресурс где можно его взять: http://apache.rinet.ru/dist/httpd/binaries/win32/
Вторая и третья цифра в версии могут отличаться от приведённых здесь – следует выбирать самую последнюю версию, так как в ней устранены ошибки обнаруженные в предыдущих версиях.

PHP 5 можно загрузить из раздела нашего сайта.

Дистрибутив MySQL можно загрузить со страницы нашего сайта.

Полное справочное руководство на русском языке можно найти по адресу .

После того как мы запаслись всеми необходимыми дистрибутивами можно приступать к установке. Порядок установки Apache, PHP и MySQL не имеет значения. Начнём с Web-сервера Apache.

Установка Web-сервера Apache

Запустите установщик Web-сервера Apache. Результатом будет окно с лицензионным соглашением, после принятия которого, следует перейти к следующему окну с краткой информацией о нововведениях во второй версии Apache. Следующее окно, показанное на рисунке, позволяет ввести информацию о сервере: доменное имя сервера , имя сервера и адрес электронной почты администратора . Если установка происходит на локальную машину, то в поля для доменного имени и имени сервера следует ввести localhost (см. рисунок.). В нижней части окна предлагается выбрать номер порта по которому сервер будет принимать запросы (80 или 8080).


localhost - это имя для использования сервера на локальной машине, которое связано с IP-адресом 127.0.0.1, который зарезервирован для локального использования.

После этого будет предложен способ установки: стандартный (Typical ) или выборочный (Custom ), позволяющий выбрать компоненты сервера вручную. Следующее окно позволяет выбрать каталог установки сервера, по умолчанию это C:Program FilesApache Group , но мы рекомендуем выбрать другой каталог, например, С:www. После этого мастер установки сообщит о готовности к процессу установки и после нажатия кнопки Install , будет произведено копирование файлов сервера. Если установка прошла успешно, Windows автоматически запустит Apache.

После успешной инсталляции при наборе в окне браузера http://localhost/ или http://127.0.0.1/ - должна загрузится страница сервера.

Теперь необходимо научиться управлять Apache, а именно научится запускать, останавливать и перезапускать сервер. Существует много способов осуществить эти операции: при помощи утилиты ApacheMonitor, используя консоль управления сервисов Windows, используя пункты меню Пуск, из командной строки… Мы рассмотрим консоль управления сервисов Windows, позволяющего настроить Apache для автоматического старта при запуске системы. Для запуска консоли управления выполните команду
Пуск->Настройка->Панель управления->Администрирование->Службы .
В появившемся окне консоли, на приведённом ниже рисунке, следует выбрать сервис Apache2. Контекстное меню, открывающееся по нажатию на правой кнопке, позволяет осуществлять запуск, остановку и перезапуск сервиса.


Службы Windows позволяют осуществлять запуск фоновых приложений при старте системы. Для этого необходимо перейти в окно Свойства, выбрав в контекстном меню сервиса пункт Свойства и в появившемся окне в выпадающем списке "Тип запуска " выбрать пункт "Авто ".

Конфигурирование Apache

Web-сервер - сложный программный продукт работающий на разных платформах и в разных операционных системах по всему миру. Поэтому для корректной работы на установленной системе его необходимо настроить (сконфигурировать).
По умолчанию настройки Apache расположены в файле httpd.conf в директории conf. Далее будут описаны основные директивы файла httpd.conf и их общеупотребительные значения.

Пути к файлам

В конфигурационных файлах Apache и PHP Вам часто придется указывать пути к различным директориям и папкам. В операционных системах UNIX и Windows при-меняются различные разделители каталогов. В UNIX используется прямая косая черта "/", например /usr/bin/perl, в в Windows обратная, например, c:Apachein. Вообще, в некоторых директивах Apache и PHP работают оба вида разделителей каталогов: прямой(/) и обратный(), но так как и Apache и PHP изначально разрабаты-вались под UNIX, то применяя их "родной" формат, Вы сможете избежать ряда проблем. Поэтому пути в настроечных файлах (httpd.conf и php.ini) рекомендуется писать через слеш в формате UNIX - "/". Например:

ScriptAlias "/php_dir/" "c:/php/"

Директивы файла httpd.conf

Port

Port 80

Устанавливает порт TCP, который используется Apache для установки соединения. По умолчанию используется 80 порт.

Примечание

Единственная причина использования нестандартного порта - это отсутствие прав на использование стандартного порта. При использовании нестандартного порта, например, 8080 номер порта следует указывать в адресе, например: http://localhost:8080/.

ServerAdmin

ServerAdmin [email protected]

Содержит e-mail-адрес администратора web-сервера, который будет отображаться при ошибках работы сервера.

ServerName

ServerName myserver

Содержит имя компьютера для сервера.

ServerRoot

ServerRoot "C:/Apache2"

Указывает на каталог, содержащий файлы WEB-сервера Apache.

Примечание

Не путайте директиву ServerRoot с директивой DocumentRoot, которая указывает каталог для файлов WEB-сайта.

DocumentRoot

DocumentRoot "C:/Apache2/htdocs"

Определяет каталог, в котором расположены файлы WEB-сайта.

Контейнер

Сфера действия директив внутри этого контейнера распространяется на все файлы и подкаталоги внутри DocumentRoot.


Options FollowSymLinks Includes Indexes
AllowOverride All

  • Директива AllowOverride установленная в значение All разрешает переопределять значения главного конфигурационного файла httpd.conf в файлах.htaccess.
  • Директива Options FollowSymLinks разрешает Apache следовать символическим ссылкам.
  • Директива Options Includes разрешает выполнение директив SSI (Server Side Includes) в коде страниц web-сайта.
  • Директива Options Indexes указывает, что нужно возвращать содержимое каталога, если отсутствует индексный файл.

DirectoryIndex

DirectoryIndex index.html index.phtml index.php

Содержит список индексных файлов, которые следует отображать при обращении к директории без указания имени файла (например, http://localhost/test/).

AddDefaultCharset

AddDefaultCharset windows-1251

Устанавливает кодировку по умолчанию, если кодировка не установлена в заголовке HTML-документа. Также Вам может потребоваться указывать значение кодировки KOI8-R.

Создание виртуальных хостов

На одном WEB-сервере Apache можно установить несколько WEB-сайтов. Эта функция сервера называется виртуальным хостингом. Ниже рассмотрим создание виртуальных узлов на основе имен. Виртуальные узлы обычно расположены в конце файла httpd.conf.

Сначала требуется указать какой IP-адрес используется для виртуальных хостов.



# Директивы виртуального хоста

Файл httpd.conf. Контейнер


ServerAdmin webmaster@may_domain.ru
DocumentRoot c:/www/mysite
ServerName www.mysite.ru
ServerAlias www.site.ru www.host2.ru
ErrorLog logs/mysite-error.log
CustomLog logs/mysite-access.log common

Рассмотрим директивы виртуального узла:

  • DocumentRoot указывает каталог, где расположены файлы (странички) данного виртуального узла (WEB-сайта)
  • ServerName указывает имя виртуального узла, по которому к нему можно обратиться. В данном случае, по адресу http://www.mysite.ru/.
  • ServerAlias содержит псевдонимы имен виртуального узла. В данном случае к виртуальному узлу можно также обратиться, используя имена: http://www.site.ru/ и http://www.host2.ru/.
  • ErrorLog и CustomLog указывает имена логов сервера для этого виртуального хоста.

Контейнеры обычно располагают один за другим в конце файла httpd.conf.

Файл httpd.conf. Настройка виртуальных хостов

NameVirtualHost 127.0.0.1:80

# Директивы виртуального хоста 1


# Директивы виртуального хоста 2


# Директивы виртуального хоста 3

Примечание

Для применения изменений, вносимых в файл httpd.conf, Apache следует перезагрузить.

Для того, чтобы обращаться к виртуальным узлам по именам их следует прописать в базы данных DNS-сервера. Если Вы используете Apache для тестирования файлов на локальной машине, то имена ваших виртуальных узлов следует прописать в файле hosts. Для Windows 2000 и XP он расположен в каталоге C:WindowSystem32Driversets. Файл hosts содержит записи вида:

Формат записей файла hosts

127.0.0.1 www.mysite.ru
127.0.0.1 www.site.ru
127.0.0.1 www.host2.ru

Установка и настройка PHP

Для установки PHP следует создать каталог c:/php и разместить в нём файлы из zip-архива дистрибутива. После этого следует переименовать конфигурационный файл php.ini-dist в php.ini и скопировать его в директорию Windows.

Установка PHP в качестве модуля

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

Замечание

При установке PHP в качестве модуля настройки из php.ini читаются один раз при запуске Web-сервера. Поэтому при внесении изменений в php.ini необходимо перегрузить Apache для того, чтобы внесенные изменения вступили в силу.

Для установки PHP откройте файл главный настроечный файл Apache httpd.conf на редактирование и удалите символы комментариев со следующих строк, при необходимости изменив их:

Файл httpd.conf. Подключение PHP как модуль Apache


LoadModule php5_module c:/php/php5apache2.dll

Примечание

Установка PHP, как CGI-приложения

При установке PHP, как CGI-приложения интерпретатор PHP будет загружаться каждый раз при вызове PHP-сценария. В связи с этим, возможно, некоторое ухудшение быстродействия. Если PHP установлен, как CGI, то при внесении изменений в файл php.ini Apache перезагружать не следует, так как установки читаются каждый раз при выполнении PHP-сценария. Установка PHP как CGI немного ускоряет внесение изменений в конфигурацию PHP, так она не требует перезагрузки WEB-сервера.

Примечание

При установке PHP, как CGI перестанут работать некоторые заголовки, например, Вы не сможете организовать авторизацию пользователей средствами PHP. Авторизации можно будет реализовать только средствами самого Apache с помощью файлов.htaccess.

Для установки PHP откройте главный настроечный файл httpd.conf на редактирование, найдите в нем закомментированные строки подключения PHP и измените их следующим образом:

Файл httpd.conf. Подключение PHP как CGI

AddType application/x-httpd-php phtml php

Options ExecCGI

ScriptAlias "/php_dir/" "c:/php/"
Action application/x-httpd-php "/php_dir/php-cgi.exe"

Примечание

Вместо директории c:/php подставьте Вашу директорию с установленным PHP.

Конфигурирование PHP (файл php.ini)

Так как на локальной машине вы, скорее всего, будете заняты тестированием Ваших Web-приложений, то необходимо должным образом настроить конфигурационный файл php.ini. Найдите директиву error_reporting и установите для неё следующее значение:

Это значение настроит PHP таким образом, что при работе PHP-скриптов будут отображаться все ошибки, а "замечания" будут игнорироваться. Так же обходимо проследить, чтобы директива display_errors, была включена:

Display_errors = On

Если данная директива отключена (Off), то сообщения об ошибках не будут выводится в окно браузера и в случае возникновения в коде ошибки вы будете гадать перед девственно белым окном - что бы это означало.
Так же необходимо проследить, чтобы директива variables_order имела следующее значение:

Variables_order = "EGPCS"

Буквы здесь означают следующее:
E - переменными среды
G - переменными передаваемыми по методу GET (G)
P - переменными передаваемыми по методу POST (P)
C - Cookies
S - сессии
Отсутствие какой-либо из букв не позволит вам работать с соответствующими переменными.

Следующая директива, которая может потребовать настройки – это register_globals . Если данная директива включена

Register_globals = On

то переменные передаваемые метором GET, POST, через cookies и сессии можно использовать в PHP-скрипте, обращаясь к ним просто как обычным переменным $someone.
Если данная директива отключена

Register_globals = Off

то к таким переменным можно будет обращаться только при помощи суперглобальных массивов ($_POST, $_GET и т.п.).
Директива register_long_arrays позволяет использовать суперглобальные массивы в старом формате ("длинном" - $HTTP_GET_VARS, $HTTP_POST_VARS и т.д.)

Register_long_arrays = On

Теперь необходимо настроить индексный файл. Если в окне браузера набрать строку http://localhost/, а не http://localhost/index.html. Сервер всё равно предоставит браузеру index.html, так как этот файл является индексным и ищется в директории первую очередь, если не указан конкретный файл. Теперь необходимо настроить http.conf, таким образом, чтобы Web-сервер Apache так же реагировал на файлы index.php. Для этого найдте в http.conf директиву DirectoryIndex и исправьте её следующим образом:

DirectoryIndex index.html index.html.var index.php

После этого необходимо перегрузить сервер Apache, а в корневой директории виртуального хоста ("C:/www/scripts") создать пробный файл PHP (index.php):

phpinfo ();
?>

В случае успешной настройки, обращение по адресу http://localhost/index.php отобразит фиолетовую таблицу с текущими настройками PHP, которая выдаётся функцией phpinfo().
Таким образом, у нас настроена связка Apache и PHP и можно переходить к настройке MySQL. Распакуйте дистрибутив MySQL во временную директорию и запустите установщик. Контролировать работу сервера MySQL можно точно так же как и Apache, используя консоль управления сервисов Windows.

Подключение MySQL

Подробная методика подключения к PHP расширения MySQL описана в статье по ссылке: .

Если сервер MySQL уже установлен на Вашей машине, то следующим шагом будет настройка PHP для работы с базами данных MySQL.

Откройте на редактирование файл php.ini из каталога Windows. Для подключения библиотеки расширения MySQL Вам нужно убрать символ комментария;(точка с запятой) из строки:

Extension=php_mysql.dll

Также проверьте значение директивы extension_dir

Extension_dir ="c:/php-5.0/ext"

Она должна указывать на каталог, где хранятся расширения PHP. Разделители каталогов рекомендуется писать в формате UNIX (/) - обратный слеш. Однако, если ничего не получается, просто откатите назад значение директивы extension_dir, а библиотеку php_mysql.dll скопируйте в корень C:/php-5.0/ - в большинстве случаев это должно помочь.

Если PHP Вас подключен как модуль, то Вам также необходимо скопировать библиотеку libmysql.dll из каталога с установленным PHP в системный каталог C:/Windows/System32. Чтобы внесенные изменения вступили в силу - перезагрузите Apache.

Для проверки работы MySQL перезапустите сервер Apache и создайте проверочный скрипт со следующим кодом:

$dblocation = "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 "

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

"
;
exit();
}
echo
mysql_result ($ver , 0 );
?>

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

В новых версиях MySQL (начиная с 4.1.0) изменился порядок работы с национальными кодировками, поэтому старый код может вызывать появление в таблице базы данных знаков вопроса "????????" вместо русского текста. Для того, чтобы этого не возникало в начало PHP-скрипта, после установки соединения с базой данных, следует поместить следующие строки:

mysql_query ("set character_set_client="cp1251"" );
mysql_query ("set character_set_results="cp1251"" );
mysql_query ("set collation_connection="cp1251_general_ci"" );
?>

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

На последок вам возможно понадобится настроить некоторые расширения PHP, они настраиваются точно так же как и MySQL.

Так для того, чтобы подключить графическую библиотеку GDLib в php.ini необходимо раскомментировать строку:

Extension=php_gd2.dll

Проверьте после этого наличие данной библиотеки в папке c:phpext. После внесения изменений в php.ini перезапустите сервер. Что бы быстро проверить: подключилась ли библиотека - выполните функцию phpinfo(). Если все в порядке, то в таблице, которая отображается функций phpinfo(), должен появится раздел "gd

При использовании устаревшего имени php.exe, использовавшегося в более ранних версиях вместо php-cgi.exe также возможно появлении ошибки:

403 Forbidden You don"t have permission to access /__php_dir__/php.exe/test.php on this server

HTML-файлы выполняются, а PHP-скрипты нет

При ненастроенном подключении PHP при обращении к файлам с расширением php, например: http:/localohost/index.php открывается окно с запрос на загрузку такого файла. Это говорит о том, что не настроена обработка файлов с расширением php. Проверьте в файле httpd.conf существование следующей строки:

AddType application/x-httpd-php phtml php

Notice: Undefined variable...

На новом, только что установленном, PHP можно часто видеть сообщения вида:

Notice: Undefined variable: msg in C:/Main/addrec.php on line 7

Error_reporting = E_ALL & ~E_NOTICE

Не подключается MySQL

Иногда возникают проблемы с установкой MySQL. Следует проконтролировать запускается ли MySQL в качестве сервиса каждый раз при старте системы. Для этого откройте консоль сервисов:

Пуск | Настройка | Панель управления | Администрирование | Службы

найдите там MySQL - запустите. Чтобы сервер стартовал при каждой загрузке системы нажмите правую кнопку мыши на сервисе и выберите "Свойства" - в открывшемся выпадающем списке "Тип запуска" выберите пункт "Авто".

Если при запуске Apache и при обращении ко скриптам выдается сообщение о невозможности загрузки библиотеки php_mysql.dll.

PHP startup: Unable to load dynamic library c:/php/ext/php_mysql.dll
- не найден указанный модуль

То еще раз сверьтесь с инструкциями из раздела, где описывается подключение к PHP библиотеки для работы с MySQL. Используете ли Вы "правильную" версию файла php_mysql.dll (именно для той версии PHP, которая установлена в системе)?
Версии файла php_mysql.dll различаются для разных версий PHP, хотя и имеют одно и тоже название.

  • Использование разделителей каталогов формате Windows (обратный слеш): c:apache/bin. Для надежной работы следует использовать разделители в формате UNIX (прямой слеш), например: c:/apache/bin.
  • Существование нескольких настроечных файлов php.ini на машине, либо отсутствие такого файла. Нужный файл php.ini должен лежать в директории Windows. Проведите поиск по дискам компьютера, найдите все лишние версии файлов и удалите их.
  • Любые возникающие по установке связки Apache+PHP+MySQL вопросы вы можете задать на нашем форуме посвященном установке и настройке Apache, PHP и библиотек расширений .

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

    Здесь рассматриваются основные параметры php, разделенные по категориям. Список параметров в основном соответствует версии php 4.0.6, однако здесь рассматриваются только основные параметры. Полный список параметров с комментариями по каждому из них можно увидеть непосредственно в php.ini, а также в соответствующем разделе php manual.

    Значения параметров, имеющих варианты "да/нет" могут быть следующими:

    ДА - 1, on, true or yes
    НЕТ - 0, off, false or no

    Short_open_tag

    Включение поддержки сокращенного варианта php тегов. Если эта опция отключена, то php код будет распознаваться только внутри тегов. Если включена - то разрешено использование тегов. Хорошим тоном считается не использовать сокращенной записи php тегов.

    Включение поддержки asp тегов <% %> в качестве php тегов.

    Output_buffering

    Включение буферизированного вывода php. Использование буферизированного вывода позволит вам, к примеру, использовать любые функции, оперирующие с http header"ами (header(), setcookie()) в любом месте вашего скрипта, не заботясь о том, чтобы не выводить ничего до этого. Вы можете управлять буферизированным выводом и из ваших скриптов (см. раздел output control functions в php manual). Помните, что при включенной буферизации вывода результат работы скрипта будет возвращен браузеру только после того, как будет закончена работа скрипта, что может привести к более медленной работе сайта.

    Включение безопасного режима работы php. Безопасный режим запрещает скриптам производить любые действия, которые являются небезопасными для сервера, на котором работает php. Очень подробно безопасный режим работы php рассматривается в php manual.

    Max_execution_time

    Максимальное время работы php скрипта (в секундах). Спустя это время работа скрипта будет принудительно завершена и выдана соответствующая ошибка. Позволяет избежать проблем с "зациклившимися" скриптами.

    Максимальный объем памяти, который может быть выделен для нужд скрипта. Также позволяет избежать проблем с "зациклившимися" скриптами.

    Error_reporting

    Маска для сообщений об ошибках, которые должны генерироваться php. Задается в виде логического выражения с использованием набора предопределенных констант, описывающих различные типы ошибок. Список этих констант, а также правила задания выражений можно найти в php.ini.

    Display_errors

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

    Если включена эта опция, то все ошибки будут записываться в log файл, определенный следующей опцией.

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

    Если включена эта опция, то текст последней ошибки будет всегда доступен из переменной $php_errormsg.

    Register_globals

    Этот параметр определяет, будут ли т.н. egpcs переменные (environment, get, post, cookies, session) доступны в виде глобальных переменных php. Если этот параметр разрешен, то переменные доступ к этим переменным будет осуществляться также, как и к любым другим глобальным переменным php:


    echo "Версия http протокола: " . $server_protocol ;
    echo "Параметр query string: " . $param1 ;
    echo "Элемент формы: " . $txtfirstname ;
    echo "Мои cookie: " . $mycookie ;
    echo . $mysessionvar ;

    Или то же самое, но с отключенным параметром:


    echo "Версия http протокола: " . $http_env_vars [ "server_protocol" ];
    echo "Параметр query string: " . $http_get_vars [ "param1" ];
    echo "Элемент формы: " . $http_post_vars [ "txtfirstname" ];
    echo "Мои cookie: " . $http_cookie_vars [ "mycookie" ];
    echo "Мои сессионные переменные: " . $http_session_vars [ "mysessionvar" ];

    На первый взгляд это менее удобно, но отключение этого параметра имеет и свои преимущества:

    Php начинает работать немного быстрее, т.к. не тратится дополнительное время на создание множества переменных.
    Нет риска того, что какие-то две переменные будут иметь одинаковые имена, что приведет к появлению ошибок в работе скрипта, которые будет очень сложно отловить в силу их неочевидности.
    variables_order

    Этот параметр используется в связке с предыдущим параметром и определяет, в какой последовательности производится регистрация глобальных egpcs переменных. Например, при значении по умолчанию (egpcs) переменные, переданные через get будут замещены переменными, переданными через post и имеющими то же имя. post-переменные (а также environment и get переменные) в свою очередь могут быть замещены значениями cookies с такими же именами и т.д.

    Magic_quotes_gpc

    Включение этого параметра приведет к тому, что все данные, поступающие со стороны клиента (через get, post или cookie) будут обработаны: все кавычки (" и ") в них будут замещены соответственно сочетанием " или ". С одной стороны это очень удобно, если планируется, например, вставлять эти данные в строки, передаваемые, например, sql серверу. Но с другой стороны это может привести к путанице, поэтому обычно надежнее использовать для этой цели функции addslashes() и stripslashes().

    Magic_quotes_runtime

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

    Magic_quotes_sybase

    Включение этой опции приведет к тому, что одинарные кавычки (") будут сдваиваться (""). Это необходимо для некоторых sql серверов, которые поддерживают только такой способ вставки кавычек в строки (interbase, ms sql, sybase и некоторые другие).

    Auto_prepend_file

    Позволяет задать путь и имя файла, который будет автоматически добавляться в начало каждого php скрипта. Используется только если имеет непустое значение.

    Auto_append_file

    То же самое, что предыдущий параметр, но добавление содержимого файла производится в конец каждого php скрипта.

    Путь к каталогу, где лежат модули php. Обычно это подкаталог extensions в корневом каталоге php.

    Если спросить веб-программиста, какой из всех файлов дистрибутива 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 ).



    Есть вопросы?

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам: