Интерпретатор PHP скриптов для вебсервера существует в двух вариантах:
1. в виде CGI программы,
2. как модуль web-сервера Apache.
В первом случае при вызове PHP-сценария, он выполняется вызовом отдельной программы интерпретатора – т.е выполняя определенный exe-файл.
Во втором случае PHP интегрируется в Apache – загружается в память как модуль Apache из соответствующего DLL файла.
PHP существует в версиях совместимых с ветками 4 и 5 – с номерами версий 4.x и 5.x соответственно.
Версия 5.x по сравнению с 4.x расширена и поддерживает больше возможностей.
В этой статье предлагается следующий путь – установка PHP5 в качестве модуля Apache для страниц с раширением .php и PHP4 в качестве CGI программы для страниц с раширением .php4.
Установка PHP5
Загрузите последнюю версию PHP5 (zip или bz2 архив) c www.php.net/downloads.php выбрав соответствующее региональное зеркало.
Распакуйте содержимое архива в каталог c:\php
В результате у вас файл php.exe должен быть внутри каталога c:\php Создайте каталог c:\php\temp
Скопируйте файл c:\php\php.ini-dist в новый файл c:\php\php.ini
Внесите изменения в файл настройки php.ini.
В справочном пособии по PHP описаны все конфигурационные опции.
Для начала достаточно обратить внимания на самые важные из них.
Максимально доступное время выполнения скрипта:
max_execution_time = 60
Ограничение памяти:
memory_limit = 32M
Настройка вывода сообщений об ошибках (все кроме Notice):
error_reporting = E_ALL & ~E_NOTICE
Какой файл использовать как журнал для записи сообщений об ошибках:
error_log = c:\php\errors.log
Автоматическая регистрация глобальных переменных:
register_globals = Off
Лучше register_globals выключить (Off) и сразу забыть о ней. Так будет безопаснее!
Зачем нужны автоматические переменные если они уже есть?
В PHP скриптах все данные отправленные в скрипт легко читаем из суперглобальных массивов:
$_GET[], $_POST[], $_COOKIE[], $_FILES[], $_SERVER[], $_REQUEST[], $_ENV[]
Максимальный объем данных передаваемых через POST:
post_max_size = 8M
“Магические кавычки” – режим автоматического Escape-рования кавычек ‘ ” и символа \ для строк переданных через GET, POST:
magic_quotes_gpc = On
magic_quotes_runtime = Off
Кодировка по умолчанию:
default_charset = “windows-1251″
Каталог, где находятся модули PHP:
extension_dir = “c:\php\ext\”
Разрешить динамическую загрузку модулей (это не работает в PHP-скриптах из-под модуля в Apache2):
enable_dl = On
Разрешить загрузку (через <INPUT type=file>) файлов:
file_uploads = On
Каталог для загрузки файлов через HTTP:
upload_tmp_dir = c:\php\temp
Максимальный размер загружаемых файлов через HTTP:
upload_max_filesize = 8M
Разрешить открывать удаленные файлы (из других серверов) в файловых операциях:
allow_url_fopen = On
Анонимный пароль для функций работы c FTP протоколом:
from=”anonymous@example.com”
Для HTTP заголовка User-Agent :
user_agent=”PHP”
Для отправки почтовых сообщений – поле From :
sendmail_from = php@example.com
Настройка механизма сессий:
session.save_handler = files
session.save_path = “c:\php\temp”
Важным моментом является наличие каталога c:\php\temp, иначе механихм сессий не будет работать.
Можно включить некоторые дополнительные модули.
Перед включением каждого модуля нужно убедится в его наличии.
Каждый модуль размещен в отдельном DLL файле.
В нашем случае модули размещаются в каталоге c:\php\ext\.
Отсутствующие в стандартом дистрибутиве PHP модули можно найти в коллекции модулей PECL (будет рассмотрено ниже).
База данных Mysql
extension=php_mysql.dll
База данных Mysql (Improved Extension)
extension=php_mysqli.dll
Работа с BZ2 архивами
extension=php_bz2.dll
Работа с ZIP архивами
extension=php_zip.dll
Работа с графикой
extension=php_gd2.dll
Работа с SWF
extension=php_ming.dll
Работа с сокетами
extension=php_sockets.dll
Работа с CURL библиотекой (загрузка файлов)
extension=php_curl.dll
Функции криптования
extension=php_mcrypt.dll
extension=php_mhash.dll
XSLT процессор
extension=php_xsl.dll
База данных SQLite
extension=php_sqlite.dll
Протестируем PHP.
Создаем текстовый файл C:\php\test.php:
<? echo “Hello World!”; ?>
в коммандной консоли выполняем:
cd c:\php
c:\php\php.exe test.php
смотрим как выполняется тестовый скрипт.
Кто не в курсе что такое коммандная консоль – в панели задач Windows выбираем
Пуск -> Стандартные -> Коммандная строка
откроется окно с черным фоном и строкой ввода для комманд.
Установка PHP4
Алгоритм установки такой же как для PHP5, только несколько отличий.
C сайта php.net берем архив с последним дистрибутивом PHP4.x.
Распаковываем уже в другой каталог – c:\php4
Копируем файл php4ts.dll в системный c:\windows\system32\
Копируем файлы из подкаталога dlls\ в системный c:\windows\system32\
Не забудьте произвести настройки в файле php.ini
Для Apache будем использовать PHP4 как CGI версию.
Установка Apache2
Имена хостов, размещенные на сервере где устанавливается Apache указываются в файле hosts.
Файл hosts в Windows системах находится по следующему пути:
c:\windows\system32\drivers\etc\hosts.
Для Windows2000 это будет c:\winnt\system32\drivers\etc\hosts.
для Windows98 – c:\windows\hosts.
Каждый компьютер в сети ссылается на себя самого по имени localhost.
Допустим, пусть мы выбрали имя сервера test.
Пропишем в файле hosts соответсвие этому имени:
127.0.0.1 localhost
127.0.0.1 test
Адрес 127.0.0.1 соответствует специальному loockback-механизму позволяющему серверу обращаться к самому себе.
Загрузите последнюю версию Apache2 с httpd.apache.org выбрав соответствующее региональное зеркало.
Запустите установку.
Появится диалоговое окно настроек, укажите параметры сервера:
Network Domain = имя_сервера (test)
Server Name = имя_сервера (test)
Administrator’s Email Address = ваш@e.mail
Install Apache HTTP Server 2 for All Users = yes
Install to:
Apache HTTP Server 2 = c:\
Apache Runtime = c:\www
Важно правильно указать путь к размещению Apache.
В результате установки каталог bin\ должен находится внутри каталога C:\www\
После выполения программы установки, все настройки можно будет изменять в дальнейшем в конфигурационном скрипте.
Идем далее, следует утановка программы Apache.
После установки удаляем из Пуск -> Программы -> Автозагрузка ярлык Monitor Apache Servers,
это если нет необходимости светить значек Apache в системном трее.
Вся настройка сервера сосредоточена в основном конфигурационном скрипте c:\www\conf\httpd.conf
Редактируется любым текстовым редактором.
Каталог сервера:
ServerRoot “C:/www”
Имя сервера (мы вибирали test в этом примере), 80 – это стандартный порт на котором работает HTTP:
ServerName test:80
Путь к корневому каталогу хоста localhost:
DocumentRoot “C:/www/vhosts/localhost/htdocs”
Включаем некоторые модули:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so
LoadModule vhost_alias_module modules/mod_vhost_alias.so
Включаем модуль PHP5 для скритов с расширениями .php, .php5 :
LoadModule php5_module “c:/php/php5apache2.dll”
AddType application/x-httpd-php .php .php5
PHPIniDir “C:/php”
Включаем PHP4 как CGI для скритов с расширениями .php3, php4 :
ScriptAlias /php4/ “c:/php4/”
AddType application/x-httpd-php4 .php3 .php4
Action application/x-httpd-php4 “/php4/php.exe”
Корневой каталог для localhost :
DocumentRoot “C:/www/vhosts/localhost/htdocs”
<Directory “C:/www/vhosts”>
Options Indexes FollowSymLinks Includes MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
</Directory>
Индексные страницы
DirectoryIndex index.php index.html index.htm index.shtml index.pl index.cgi
Если это будет нужно, можно включить журнал для операций модуля Rewrite указав число – уровень отладки:
RewriteLogLevel 9
RewriteLog “C:/www/logs/rewrite.log”
Включаем выполнение SSI :
AddType text/html .shtml
AddOutputFilter INCLUDES .shtml
Секции
<Directory “путь”>…</Directory>
служат для указания настроек для определенного каталога сервера
Опция AllowOverride устанавливает возможности файлов .htaccess для каталога в секции Directory
используются значения All, None или комбинации Options FileInfo AuthConfig Limit
Для отдельных каталогов хоста можно указывать собственные настройки в файлах .htaccess
Почему именно .htaccess – потому что опция AccessFileName которая определяет это имя по умолчанию так установлена
Если например запретить .htaccess то пользователь не сможет включать стандартный апачевский механизм HTTP Autorization для каталогов.
Каждая опция применяемая в httpd.conf или же в .htaccess подробно описана в руководстве пользователя Apache. Посмотрите на страницу по адресу http://localhost после установки сервера – вы там найдете ссылку на документацию.
Как использовать сервер
После кажой модификации конфига перезапускайте сервер.
Для этого в панели задач Windows есть ярлык:
Пуск -> Программы -> Apache HTTP Server 2.xx -> Control Apache Server -> Restart
Если при запуске Apache выдается диалоговое окно с сообщением об ошибке, что не найдет такой-то DLL файл, это по видимому проблема с загрузкой модулей или какихто зависимостей – других DLL которые вызываются модулями. Здесь прийдется действовать експериментально, последовательно подключая каждый модуль. Ниже будет рассмотрено как подключать модули в PHP.
Теперь HTTP сервер Apache у вас работает на 80 порту, для этого у вас должен быть запущен процесс Apache.exe
В Windows NT/2000/XP и ежеподобных программа установки Apache установит запуск сервера при помощи сервиса, который будет автоматически загружаться каждый раз при включении вашей системы.
Если все было сделано правильно, вы сможите видеть стартовую страницу Apache по адресу http://localhost
Если в вашей системе используется брэндмауер (сетевой экран, firewall) позаботьтесь об настройке сетевого доступа для Apache. Если вы используете сервер в целах обучения и не собираетесь открывать свой собственный web-сервер, целесообразно закрыть доступ для всех интерфейсов кроме 127.0.0.1. Если вы уверенны что ваша локальная сеть безопасна от вторжений незнакомцев – можите отыть доступ Apache для интерфейсов локальной сети (это адреса 192.168.x.x, 10.x.x.x)
Тестируем работу PHP на сервере Apache.
Создаем файл
C:/www/vhosts/localhost/htdocs/phpinfo.php
со следующей строкой:
<? phpinfo(); ?>
Запускаем в браузере http://localhost/phpinfo.php
если все правильно установлено, видим вывод функции phpinfo с подробной информацией о PHP.
Если PHP на сервер работает нормально, файл с расширением php должен загружаться в вашем браузере как нормальная страница, отображаяя содержимое с HTML кодом, без выдачи запроса на сохранение файла.
Запуск одного и того же сценария на PHP4 и PHP5
Допустим у нас есть сценарий в .php файле script.php, который в нашем случае будет обрабатываться через PHP5, мы хотим проверить как он выполнится через PHP4.
PHP4 мы установили как CGI-версию, и в Apache зарегистировали под него расширения .php4 и .php3.
Создадим в том же каталоге файл script.php4 – с тем же именем что и .php только с раширением .php4 с одной лиш строкой кода:
<? include “script.php”; ?>
Apache обработает такой скрипт направив на выполнение файл программе-интерпретатору который размещен у нас в файле c:\php4\php.exe.
Настройка виртуальных хостов в Apache
Внесите изменения в конфигурационный скрипт c:\www\conf\httpd.conf
NameVirtualHost *:80
Для кажого сайта (хоста) на вашем сервере должна быть соответствующую секция
<VirtualHost *:80>…</VirtualHost>
Этот хост – localhost в нашем примере размещен c:/www/vhosts/localhost/htdocs
обязательный, он заменяет установленный по умолчанию c:\www\htdocs\
<VirtualHost *:80>
ServerAdmin ax@ukr.net
DocumentRoot c:/www/vhosts/localhost/htdocs
ServerName localhost
ErrorLog logs/localhost.error.log
CustomLog logs/localhost.access.log common
</VirtualHost>
Не забудьте что система не сможет обратиться к вашим хостам по именах, если не настроить DNS
Для каждого локального сайта вносите соответствующую запись в файле c:\winnt\system32\drivers\etc\hosts
127.0.0.1 доменное_имя
Модули PHP
Загрузить архив с дополнительными PECL-модулями для PHP5 под Windows можно со страницы pecl.php.net
Распакуйте архив и поместите нужные файлы модулей в каталог C:\php\ext\
В файле C:\php\php.ini включите нужные модули строками
extension=файл.dll
Некоторые модули могут иметь зависимости от других DLL библиотек, которые нужно будет поместить в c:\windows\system32
Если библиотека не найдена или не найдена требуемая библиотека, короче она не загружается при загрузке Apache и выдается сообщение could not load …
В таком случае проверьте подходит ли библиотека для этой версии PHP и Apache и правильно ли размещены все DLL файлы.
Разработчики PHP предоставляют документацию по API для PHP, так что создавать свои модули может каждый, кто освоил системное программирование и знаком с языком C.
Установка PHP в качестве ActiveScript
Скопируйте файл php5activescript.dll в C:\php\ и C:\windows\system32\
Dводите комманды из консоли :
cd C:\php
regsvr32 php5activescript.dll
Если будет выдаваться сообщение
Ошибка при вызове LoadLibrary(”php5activescript.dll”) – Не найдена указанная процедура
убедитесь что файл php5activescript.dll был правильно скопирован (указано выше)
Продемонстрируем работу сценария ActiveScript
Создаем текстовый файл C:\php\test.wsf:
<job id=”test”>
<script language=”PHPScript”>
$WScript->Echo(”Hello World!”);
</script>
</job>
Следует учесть, что для PHP4 в качетсве идентфикации language используется имя ActivePHP а для PHP5 – PHPScript
Теперь можно запускать этот файл, как самостоятельное приложение, кликнув на нем в проводнике.
При выполнении ActiveScript вместо php.ini используется файл php-activescript.ini
Установка Perl
Перл постарше и местами выгоднее ПхП. Вобщем, ещо говрят – перл незаменим :)
Например, анализатор логов Awstats.
Загрузите последний дистрибутив ActivePerl c www.activestate.com
Запустите инсталяцию.
В процессе установки будет предложено:
- ввести каталог установки (c:\perl\)
- возможность создания ярлыка на документацию по Perl
- добавить путь к интерпретатору Perl (c:\perl\bin\) в переменную окружения PATH
- асоциировать файловые расширения (.pl, .plx) с интерпретатором Perl
В httpd.conf в Apache должно быть следующее:
AddHandler cgi-script .cgi
AddHandler cgi-script .pl
Для каталога в котором должен выполнятся Perl сценарий должно быть установлено право на выполнение CGI:
Options FollowSymLinks ExecCGI
в настройках Apache для этого каталога в соответствующей секции <Directory “путь”>…</Directory>
или в файле .htaccess
Perl сценарии создаются в файлах с раширениями cgi и pl
Установка MySQL
Загрузите дистрибутив MySQL для Windows с сайта mysql.com.
Автор использовал версию из ветки MySQL 4.1
На 1 августа 2006 года это был Windows Essentials 4.1.21 (файл mysql-essential-4.1.21-win32.msi размером 15.7Mb)
Итак, выберите ближайшее к вам зеркало по ссылке Pick a mirror и cкачайте пакет для установки.
Установка этого пакета описана в этой статье на сайте mysql.com
Запустите инсталяцию.
В диалоговом окне установки следуйте инструкциям
1. Выбор типа инсталяции
Выберите Custom
2. Путь в файловой системе
Для MySQL Server и Client Prjgrams укажите путь – C:\MySQL\
C Include Files / Lib Files можно не ставить если вы не системный программист.
После нажатия Install программа установки произведет копирование файлов сервера.
Далее запуститься следующее диалогове окно Setup Wizard
1. Можно выбрать создание аккаунта, хотя это не обязательно (Skip Sign-Up)
2. Configure the MySQL Server now
Далее запуститься диалогове окно Configuration Wizard
1. Тип конфигурации (расширенный или стандартный)
Выберите детальный – Detailed Configuration
2. Тип сервера
Выберите тип для разработчика – Developer Machine
3. Тип использования
Выберите многофункциональный – Multifunctional Database
4. Указание пути к хранению InnoDB таблиц
Можно оставить как есть – Installation Path
5. Ограничение сервера на количество одновременных соединений
Для наших задач это не особо важно – можно оставить 15
6. Включить работу через сетевой интерфес по TCP/IP
Указываем порт 3306
7. Кодировка по умолчанию
Выбираем utf8 – Best Support for Multilingualism
8. Установить как сервис в Windows (запускать в виде демона при старте системы)
Выбираем все галочки и указываем имя сервиса (несуществующее)
9. Пароль суперпользователя (root)
Можно указывать, можно сделать анонимного, но учтите – если оставить возможность входа это может быть небезопасно в вашей сети.
По нажатию Execute все изменения вступят в силу и сохранятся в конфигурационном файле c:\MySQL\my.ini
Настройка и использование MySQL
После установки программу конфигурации можно вызвать повторно через ярлык в меню
Start > All Programs > MySQL > MySQL Server 4.1 > MySQL Server Instance Config Wizard
MySQL сервер работает в запущенном процессе C:\MySQL\bin\mysqld-nt.exe
Отсанавливать/запускать сервис можно из диалого управления сервисами Windows,
кликнув правой кнопкой на сервисе и выбирая Остановить/Запустить (Stop/Start)
Для внесения изменений в настройки редактируйте файл c:\MySQL\my.ini текстовым редактором
В секции [client] должны быть следующие опции:
port=3306
character-sets-dir=c:/MySQL/share/charsets/
default-character-set=cp1251
В секции [mysql] :
default-character-set=cp1251
В секции [mysqld] должны присутствовать следующие опции:
character-sets-dir=c:/MySQL/share/charsets/
default-character-set=cp1251
Напишем простейший PHP скрипт для тестирования работы с БД.
Скрипт конектится к базе с именем test, создает таблицу tb1 и производит вставку, модификацию и выборку данных.
База test существует по умолчанию сразу после установки MySQL.
Ниже готовый исходный код скрипта:
<?
//здесь следует правильно указать: “хост”, “логин”, “пароль”
if(mysql_connect(”localhost”, “root”, “”)) {
//работаем с базой test
if(mysql_select_db(”test”)) {
//mysql_query(”SET NAMES cp1251″);
//удаляем таблицу если существует
mysql_query(”drop table if exists tb1″);
//создаем таблицу
mysql_query(”create table tb1(”.
“id int(10) unsigned not null auto_increment,”.
“name varchar(100), primary key (id))”);
//вставляем записи
mysql_query(”insert tb1 values(1,’Бобы’)”);
mysql_query(”insert tb1 values(2,’Орки’)”);
mysql_query(”insert tb1 values(3,’Импы’)”);
//читаем записи
echo “table tb1:<br>”;
$r=mysql_query(”select * from tb1″);
while ($d=mysql_fetch_assoc($r)) {
echo “ROW DATA: {$d['id']} = {$d['name']}<br>”;
}
//изменяем данные
echo “modify tb1<br>”;
mysql_query(”update tb1 set name=’Бобры’ where id=1″);
$r=mysql_query(”select * from tb1 order by name”);
//читаем
while ($d=mysql_fetch_assoc($r)) {
echo “ROW DATA: {$d['id']} = {$d['name']}<br>”;
}
}else{
echo “Error, can’t select db<br>”;
}
}else{
echo “Error, can’t connect<br>”;
}
?>
В случае если вместо русско-украинских символов видны сплошные символы вопросов ?????
необходимо после соединения с базой mysql_connect и mysql_select_db, самым первым запросом к БД выполнить смену кодировки следующим запросом:
mysql_query(”SET NAMES cp1251″);
Создание резервной копии БД
Для этого можно сделать следующий сценарий и поместить его в .bat файл:
C:\MySQL\bin\mysqldump.exe –comments=0 –default-character-set=cp1251 –compatible=mysql40 > db.sql
Эта команада вызовет стандартную утилиту mysqldump, входящую в дистрибутив MySQL, которая сохранит содержимое базы данных в текущем каталоге в файле db.sql
Популярность: 2% [?]