My name is Vasyl Khrystiuk‎ > ‎process‎ > ‎main‎ > ‎

web dev

Tags: php_tag, apache_tag, mysql_tag, cgi_tag, curl_tag, database_tag, 
Date: 15.02.14

    В этой статье описано полная и подробная инструкция об правильной(не побоюсь этого слова) настройке веб-сервера Apache, подключении интерпретатора PHP, настройке базы данных MySQL и подключении дополнительной библиотеки CURL в PHP.
    Статья ориентируется на новичков, которые пока не понимают в программировании абсолютно ничего. 
    Создавая данную конфигурацию, я дополнительно преследовал такую цель: оно должно быть независимым от системы/переменных окружения/системных файлов/драйверов. Причиной этого была скорей всего моя любовь к частым переустановкам операционной системы. Но получившаяся конфигурация в итоге на самом деле не имеет никаких зависимостей и очень надежная. 
    Так же в статье описаны типичные проблемы и ошиб
ки при настройке всего этого и как их решать.
Все написанное в статье касается операционной системы Windows (XP, 7). Для пользователей Unix-подобных операционных систем(Linux, Ubuntu, MacOS) помощь не нужна - все они и так слишком умные.
    Если вы не хотите разбираться в деталях настройки и вам нужен просто веб-сервер для работы, я настоятельно рекомендую обратить внимание на готовые сборки типа USBWebserver , Денвер. Я сам ними часто пользуюсь. 




Пару слов о версиях

Сейчас на выбор есть несколько версий как веб-сервера Apache, так и PHP.
Изначально статья писалась под связку Apache2.2, PHP 5.2 и MySQL 5.1.
Потом я понял что статье необходим рерайт и обновил статью.
И хотя на обновления  Apache2.4 уже так же был доступный, я просто не хотел его использовать. Поэтому я используя в качестве сервера все тот же Apache2.2. А вот версию PHP я обновил - 5.4. На момент написания этих строк так же было доступно для скачивания PHP 5.5, однако оно не совместимо с Apache2.2. А может и совместимо, однако в его комплекте не было необходимой библиотеки именно под эту версию. MySQL так же обновил до 5.6.

Вот еще пару слов о совместимости:
  • Если вы хотите использовать PHP 5.4 вместе с  apache 2.4.x, то вам необходимо в настройке сервера подключать так: 
    LoadModule php5_module "d:/php5.4.x/php5apache2_4.dll" 
  • Если вы хотите использовать PHP 5.2 или PHP 5.3 с apache 2.2.x , то: 
    LoadModule php5_module "d:/php5.2.x/php5apache2_2.dll"
  • Если вы хотите использовать PHP с apache 2.0.x или 2.1.x , то: 
    LoadModule php5_module "d:/php/php5.1.x/php5apache2.dll"

Установка и базовая настройка Apache

Установка 

Apache - это главное. У меня нет желания разбираться с особенностями 64-разрядной версии, и так как 32-разрядная(win32-x86) работает так же одинаково что на Windows XP, что на Windows 7, то для простоты я буду использовать именно 32-разрядную версию.  Скачиваем последнюю стабильную сборку
Переходим к загрузкам, выбираем версию 2.2, дальше выбираем "Binaries", дальше "win32" и выбираем любой инсталятор сервера (его название должно начинаться с слов "httpd-2.2" и файл должен иметь расширение ".msi") В моем случае это файл с названием "httpd-2.2.25-win32-x86-no_ssl.msi", но название может немного отличатся. 
Запускаем скачанный инсталятор. В итоге вы должны увидеть что-то вроде этого: 

Жмем дальше, на страницах с лицензиями ставим свое согласие и жмем еще дальше, до такого экрана:

Тут заполняем так как и у меня  - в поле "Network Domain" пишем "localhost", в поле "Server name" тоже пишем "localhost" а в поле "Administrator's e-mail" - соответственно "admin@localhost". Галочку в низу ставьте там где и я - это будет рабочий порт, на котором наш сервер будет ждать входящие запросы. На одном порту на одном компьютере может работать только одна программа(тут речь идет конкретно о серверном сокете), и вместе с тем одна программа может занять сколько угодно портов. Если порт одной программы занимает другая программа, то первая программа не будет работать(или будет работать не корректно) Тут внимание: мы выбрали 80 порт. На 80 порту иногда может работать скайп, потому для работы скайп нужно или отключить, либо же перенастроить. Если кто думает, что у него 80 порт свободный - пусть проверит. потому что были случаи, когда  в некоторых людей на 80 порту работали разные сервера и они не знали об этом.  Проверить 80 порт очень просто - нужно лишь в браузере перейти по адресу "http://localhost:80" и если браузер сказал, что не может соединиться, значит все хорошо и у нас 80 порт свободный. Если же ответ был иным и в ответ на запрос вам пришла некоторая страница, значит 80 порт занят уже. В большинстве случаев понять, чем он занят можно прямо с этой же страницы.
А еще очень часто на 80 порту работает IIS. Это ненужный компонент операционной системы, который нужно удалить. тут инструкция: https://www.google.com/search?q=как+удалить+IIS.
Чтоб посмотреть все порты в системе, можно еще выполнить команду: 
netstat -abn

После того, как убедились, что порт свободный, продолжаем установку(и если что-то не так, то вы об этом обязательно узнаете). На следующей странице предлагают выбрать "Setup type", там выбираем "Typical" и жмем "дальше". А дальше нам предлагают выбрать "Destination folder":


    Система у меня стоит на С:\ а все файлы хранятся на D:\ поэтому я создал на диске D:\ папку "server" и указал инсталятору устанавливать сервер в нее. Жмем "Ок" и "Дальше" и "Install". Если все хорошо, то в конце мы должны увидеть такое окно:
  
Завершаем с установкой и тестируем. Сейчас все параметры по умолчанию и проверить сервер по работу сервера можно за адресу: http://localhost/
Хорошо. Все установлено и работает. 


Настройка сервера без виртуальных хостов

Главный файл с настройками для Apache находится здесь:
D:\server\conf\httpd.conf
Открываем файл в блокноте и ищем примерно такое место:

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName localhost:80

     И раскомментируем последнюю строку (уберем # в начале строки):
#
ServerName localhost:80
    Если она у нас изначально была расскомментирована, значит все хорошо.

Из командной строки заходим в папку с сервером в D:\server\bin>
Тут у нас находится сам сервер. Для того, чтоб получить помощь по его использованию, пишем так:
httpd.exe -help
Пример:

Вот полезные для нас сейчас команды:
  • Остановка сервиса: httpd.exe -k stop
  • Удаление сервиса: httpd.exe -k uninstall
  • Установка сервиса: httpd.exe -k install
  • Запуск сервиса: httpd.exe -k start
  • Перезапуск сервиса: httpd.exe -k restart
Теперь создадим основу нашего сайта:
Создадим для нашего сайта папку D:\root\localhost и сконфигурируем httpd.conf для работы в новом месте.

Ищем примерно такое место:
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "D:/server/htdocs"
И меняем на:
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "D:/root/localhost"

Ищем дальше:
<Directory "D:/server/htdocs">

меняем на:
<Directory "D:/root/localhost">



Создадим в каталоге D:/root/localhost файл "index.hml" и напишем там что-то типа "Привет с D:/root/localhost!", сохраним в кодировке UTF8. Теперь, если из браузера зайти по адресу "http://localhost/index.html", то мы увидим то, что написано в файле. Это значит, что директория успешно перенесена в новое место. 
Теперь давайте настроим русский язык. Если они не отображаются, то для их поддержки необходимо дописать:

AddDefaultCharset utf-8
AddCharset utf-8 *
<IfModule mod_charset.c>
    CharsetSourceEnc utf-8
    CharsetDefault utf-8
</IfModule>

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

CGI-скрипты 

Давайте настроим еще пару деталей. Например настроим CGI-скрипты для работы в новом месте. Создадим папку для скриптов "D:/root/localhost/cgi-bin", найдем такую строчку в файле:
ScriptAlias /cgi-bin/ "D:/server/cgi-bin/"
и заменим на:
ScriptAlias /cgi-bin/ "D:/root/localhost/cgi-bin/"

Так же находим место в файле которое конфигурирует опции для папки с скриптами :
<Directory "D:/server/cgi-bin">
внесем изменения, указав новую папку и разрешив исполняться скрипты(для простоты я еще добавил обработчик  windows bat и cmd сценариев):
<Directory "D:/root/localhost/cgi-bin"> AllowOverride None Options ExecCGI AddHandler cgi-script .cgi .pl .exe .bat .cmd Order allow,deny Allow from all </Directory>

Для теста создадим маленький cgi-скриптик c таким содержимым:
@echo off
echo Content-Type: text/plain
echo.
echo Hello World!!
echo.
echo.
и сохраним его как "D:/root/localhost/cgi-bin/scrpt.cmd"(для теста рекомендуется запустить скрипт с консоли, чтоб убедится что скрипт выводится верно(не в одну строку а в несколько строк)(стандартный блокнот виндовс - то еще говно)).
Перезапускаем сервер, пробуем(http://localhost/cgi-bin/scrpt.cmd). Как видим, все работает:



Виртуальные сервера.

Теперь добавим несколько виртуальных доменов на наш сервер.  Внимание - в данной конфигурации включение механизма виртуальных хостов требует наново перенастроить "localhost" на ряде с другими хостами. 

Для начала создадим папку для нашего виртуального сервера. Я создал папку "mysite" внутри папки "D:\root\". Внутри нее создал дополнительно папки "D:\root\mysite\www", "D:\root\mysite\cgi-bin", "D:\root\mysite\logs". Теперь настроим конфиг файл так, чтоб сервер видел эту папку как отдельный сайт, исполнял скрипты и писал логи. Для этого нужно раскомментировать эту строку:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
Теперь перейдем к этому файлу ("conf/extra/httpd-vhosts.conf") - там видим много чего.Делаем так, чтоб там было так как нам нужно:
# сначала указываем, какой адрес будет использован для виртуальных хостов:
NameVirtualHost 127.0.0.1
# или так:
#NameVirtualHost 127.0.0.1:80 
# или так:
# NameVirtualHost *:80
# потом вносим запись первого виртуального хоста и все необходимые нам настройки:

<VirtualHost mysite>
ServerAdmin me@mysite
ServerName mysite
DocumentRoot "D:/root/mysite/www"
ScriptAlias /cgi/ "D:/root/mysite/cgi-bin/"
ErrorLog D:/root/mysite/logs/error.log
CustomLog D:/root/mysite/logs/access.log common
</VirtualHost>
Относительно опции "NameVirtualHost 127.0.0.1" - я так понял, она указывает, для какого адреса использовать правила. Есть много разных примеров использования и конфигурации и все зависит от необходимости.

Однако это не все. Еще необходимо сделать так, чтоб адрес нашего виртуального хоста был доступным. Для этого нам нужно в системной папке Windows "C:\WINDOWS\system32\drivers\etc" найти файл "hosts" и изменить его, внеся в него имена наших виртуальных хостов и IP-адрес, по которому нужно их искать:
127.0.0.1       localhost
127.0.0.1       mysite


Так же в данной конфигурации нам надо переопределить "localhost" - соответственно создадим папку "localhost" внутри "D:\root" а в ней папки "www", "cgi-bin"  и "logs":
<VirtualHost localhost>
ServerAdmin admin@localhost
ServerName localhost
DocumentRoot "D:/root/localhost/www"
ScriptAlias /cgi-bin/ "D:/root/localhost/cgi-bin/"
ErrorLog D:/root/localhost/error.log
CustomLog D:/root/localhost/access.log common
</VirtualHost>
 
Внимание, в меру особенности дефолтной настройки на разных минорных версиях сервера очень важно понимать механизм разрешения доступа сервера. Корневой элемент, который отвечает за дефолтные права доступа расположен в главном конфиг файле:
<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

Как видим, права довольно таки жесткие: сначала запрещаем, потом разрешаем, но и при этом все равно только запрещаем.
Чуть ниже в файле есть настройка прав доступа для директории нашего "localhost", настройку которого мы смотрели выше.
Так как наша корневая папка виртуального хоста не является вложенной папкой относительно нашего дефолтного "localhost"(очень часто поддомена делают в виде вложенных папок, но не наш случай), то и права на работу из той папки нужно настраивать отдельно.
Для удобства это можно сделать в том же "
httpd-vhosts.conf". Вот как будет выглядеть наш итоговый файл:


NameVirtualHost 127.0.0.1

<VirtualHost 127.0.0.1>
ServerAdmin me@mysite
ServerName mysite
DocumentRoot "D:/root/mysite/www"
ScriptAlias /cgi-bin/ "D:/root/mysite/cgi-bin/"
ErrorLog D:/root/mysite/logs/error.log
CustomLog D:/root/mysite/logs/access.log common
<Directory "D:/root/mysite/www">
    Options Indexes FollowSymLinks
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>
</VirtualHost>


<VirtualHost localhost>
ServerAdmin admin@localhost
ServerName localhost
DocumentRoot "D:/root/localhost/www"
ScriptAlias /cgi-bin/ "D:/root/localhost/cgi-bin/"
ErrorLog D:/root/localhost/logs/error.log
CustomLog D:/root/localhost/logs/access.log common
</VirtualHost>



Для теста не забудем положить в папки D:\root\mysite\www" и "D:\root\localhost\www" файлы "index.html" с приветствиями.
Сохраняем все и перезапускаем сервер: 

  
Кстати да, если настраивать виртуальные хосты, то из основного файла настроек можно выбрость половину настроек для localhost, так как это все все равно будет переопределяться. 


SSL

Возможно, тут будет настройка для SSL. 

Отличия в настройке сервера версии 2.4
Вся настройка выше, как уже было сказано, касается Apache версии 2.2. Сейчас есть версия поновее - 2.4. Старая все еще поддерживается, но в новой есть новые функции. Когда они вам нужны будут - тогда и будет смысл переходить. Но пока это не нужно - то не нужно. 


PHP

    Теперь приступим к скачиванию и настройке PHP. Я буду использовать последнюю стабильную сборку 5.4 версии. Скачиваю в виде  zip архива. 
     Здесь качаю это php-5.4.26-Win32-VC9-x86.zip (это thread safe, кстати, вот(copy) более внятная статья о разнице между thread safe и non thread safe, для виндовс желательно использовать thread safe).  Распаковываю в D:\php. Желательно, чтоб в системе не было установленных других версий PHP( если есть и нет желания их удалять - можно просто переименовать - система не сможет их найти). 
    Теперь нам надо файл настроек. Сейчас там два возможных варианта: "php.ini-development" и "php.ini-production". У них только отличия в типе ошибок, которые выводятся и в способе их вывода.  В "php.ini-development" ошибки выводятся не только в лог сервера, но и на странице. Так же там кроме ошибок в программе выводятся еще дополнительно предупреждения(устаревшие методы, синтаксис, опасные места). Берем нужный нам файл и пересохраняем его с новым именем "php.ini". В моем случае это  был "php.ini-development".

Дополнительно внесем изменения в этот файл::
; включим поддержку кратких тегов <? так же как и  <?php
short_open_tag = On 


; до версии php 5.4 в нем была опция magic_quotes_gpc, преимуществами которой я пользовался
; этот параметр отвечает за автоматическое экранирование всех escape-символов
; вот об этом параметре есть хорошая статья: http://www.ddvhouse.ru/articles/text/7/
; но это не было воспринято многими разработчиками, да и реально доставляло много проблем 
; и с популяризацией PDO эта опция утратила свою актуальность, потому от неё отказались
; оставляю эти строки для истории, опцию добавлять/искать/изменять не надо - в новом php её нет и не надо

; до версии php 4.2 в нем была опция register_globals, с дефолтным значением On
; в версии 4.3 эту опцию изменили, установив её дефолтное значение Off
; а начиная с версии 5.4 эту опцию удалили полностью
; этот параметр отвечал за то, что все переданные с формы данные будут доступны в скрипте под теми же именами 
; на это полагалось много библиотек, фреймворков и скриптов
; польза от опции сомнительна - даже я её не пользовался, 
; но мне приходилось иметь дело с скриптами, в которых эта фича использовалась
; вот больше деталей: http://www.php.net/manual/ru/security.globals.php
; оставляю эти строки для истории, опцию добавлять/искать/изменять не надо - в новом php её нет и не надо


; проверьте, включены ли сообщения об ошибках на страницах 
; это очень удобно для разработки, но очень опасно для публичного использования, установите то, что вам надо: Off или On 
display_errors = On

; явно укажем место для сохранения файлов серверных сессий
session.save_path = "D:\root\temp"
; если папки нет, то её нужно создать

; дальше укажем опции для работы с электронной почтой
; вот что рекомендуют писать:
;SMTP = mail.example.com
;smtp_port = 25
;sendmail_from = youremail@example.com
; это 
; я же скачал sendmail
; и собираюсь работать через него и поэтому в этой группе команд [mail function] внес сделал такие изменения:
[mail function]
SMTP =
sendmail_from =
sendmail_path = "D:\root\sendmail\sendmail.exe -t"
;

Теперь о подключении PHP в Apache. Существует несколько способов подключить PHP к Apache - подключить его как модуль   или как интерпретатор  CGI-скриптов.
Для подключения его как модуль необходимо все в том же файле настроек Apache "conf\httpd.conf" найти, раскомментировать/изменит/дописать это:
# Для PHP5 и Apache 2.2 нужно написать так:
LoadModule php5_module "D:/php/php5apache2_2.dll"
# так же для поддержки в Apache php нужно в блок<IfModule mime_module> ... </IfModule> добавить это:
<IfModule mime_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
# и еще нужно указать путь к папке, где находится наш php.ini
PHPIniDir "D:/php"

Так же необходимо добавить поддержку индексных страниц для нового расширения. Для этого нужно  в "conf\httpd.conf" найти и изменить это:
DirectoryIndex index.html index.php

Перезапускаем Apache и поверяем localhost/index.php:



MySQL

Теперь приступим к настройке MySQL.

Скачиваем :mysql. Можно скачать инсталятор и там наверняка будет помощник, который поможет  все настроить, но это не для нас.
поэтому мы скачиваем: 

Windows (x86, 32-bit), ZIP Archive 5.6.16 212.1M
Download
(mysql-5.6.16-win32.zip)

И распаковываем в D:\root. Находим файл "my-default.ini" и пересохраняем под  новым именем "my.ini". Для настройки mySQL его необходимо инсталировать. Заходим в "D:\root\mysql\bin"  и выполняем команду:
mysqld --install MySQL --defaults-file="D:\root\mysql\my.ini"

Слово MySQL в этом случае - это имя, под которым мы инсталлируем эту службу
Потом запускаем службу:
net start MySQL
Потом устанавливаем пароль:
mysqladmin -u root password 123
Потом подключаемся к серверу:
D:\root\mysql\bin>mysql -u root -p
Enter password: ***
и в целях безопасности удаляем все лишнее:
 mysql> drop database test;
 mysql> use mysql;
 mysql> delete from db;
 mysql> delete from user where not (host="localhost" and user="root");
 mysql> flush privileges;
Потом все выключаем.
Выходим с сервера: quit;
и останавливаем службу:
net stop MySQL
Кстати, если надо будет удалить службу, то это сделать можно такой командой(но делать этого нет смысла, к тому же иногда компьютер нужно перезагрузить, чтоб оно полностью удалило службу):
mysqld --remove MySQL

Теперь настроим  PHP для работы с mySQL.
В файле php.ini находим, раскомментируем и допишем такие значения:
extension_dir = "D:/php/ext/"
и включим(раскомментируем) библиотеки, которые необходимые для работы:
extension=php_curl.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_pdo_mysql.dll

Так же, чтоб все заработало, необходимо библиотеки mysql сделать доступными для PHP (Apache). Это можно сделать несколькими способами: 
  1. Скопировать библиотеки из mysql с папки PHP в папку Windows(для недопустимости зависимостей от системы  и избежания DLL hell рекомендую этого не делать).
  2. Добавить  путь "D:\php" и "D:\php\ext" в переменную окружения "PATH"
  3. Явно указать, какие библиотеки необходимы и сразу загрузить их в процесс Apache. 
  4. <Любой другой совет из интернета>
Я выбрал вариант, где нужно явно указать какие библиотеки использовать и откуда(не люблю DLL hell)
Для этого в конфиг файл нужно внести такие изменения:
########

#LoadFile "D:/php/libeay32.dll"
#LoadFile "D:/php/ssleay32.dll"
LoadFile "D:/root/mysql/lib/libmysql.dll"  
#LoadFile "D:/php/php5ts.dll"  

LoadModule php5_module "D:/php/php5apache2_2.dll"


<IfModule php5_module>
# указываем папку, где находится php.ini
PHPIniDir "D:/php5"

AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
</IfModule>
Сохраняем, выходим.



Теперь проверяем:
Запускаем все, создаем базу, а в ней таблицу с одним полем и вносим два записи в эту таблицу:
D:\root\mysql\bin>mysqld --install MySQL --defaults-file="D:\root\mysql\my.ini"
D:\root\mysql\bin>net start MySQL
D:\root\mysql\bin>mysql -u root -p
Enter password: ***
mysql> create database test;
mysql> use test;
Database changed
mysql> create table tt(
    -> id INT);
mysql> insert into tt(id) values (25),(123);
mysql>quit;
Перезапускаєм Apache:
D:\server\bin>httpd -k restart

Теперь напишем простейший скрипт, который будет выводить наши значения:
<?
echo "Я php скрипт <br>";
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '123';

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die                      ('Error connecting to mysql');

$dbname = 'test';
mysql_select_db($dbname);
$result = mysql_query('SELECT * from tt');
while ($row = mysql_fetch_assoc($result)) {
echo $row['id']."<br>";
}
?>

Как видим, все работает:

Curl

Работа с соединениями в PHP очень проста благодаря библиотеке CUrl.
Для того, чтоб эта библиотека была доступна, нужно в "php.ini" раскомментировать такую строку: 
extension=php_curl.dll
Вот небольшой тестовый скрипт для проверки работы этой библиотеки:
// is curl installed?
    if (!function_exists('curl_init')){ 
die('CURL is not installed!');
}
    $Url = "http://msangel.org.ua/";
     // create a new curl resource
    $ch = curl_init();
  /*
Here you find more options for curl:
http://www.php.net/curl_setopt
*/
  // set URL to download curl_setopt($ch, CURLOPT_URL, $Url);
  // set referer: curl_setopt($ch, CURLOPT_REFERER, "http://www.google.com/");
  // user agent: curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
  // remove header? 0 = yes, 1 = no curl_setopt($ch, CURLOPT_HEADER, 0);
  // should curl return or print the data? true = return, false = print curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  // timeout in seconds curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  // download the given URL, and return output $output = curl_exec($ch);
  // close the curl resource, and free system resources curl_close($ch);
  // print output echo $output;

Все сработало, но, в старых версиях PHP этот код с ходу вряд ли будет работать. 
Все дело в библиотеке zlib.dll. Если она уже присутствует в системе, значит все должно работать. Мне же для старой версии PHP пришлось её добавлять вручную. Сначала её нужно скачать: http://gnuwin32.sourceforge.net/packages/zlib.htm. DLL файл можно разместить либо в каталоге Windows/system32/ либо в каталоге с php. В втором случае для того, чтоб Apache увидел её, нужно прописать путь к папке с PHP в переменной окружения PATH либо в файле httpd.conf рядом с подгрузкой  libmysql.dll сделать такую запись: 
LoadFile "D:/php/zlib1.dll"  
Но это актуально только для старых версий пхп. В новых эта библиотека вдет в комплекте. 

А вот и результат работы скрипта:


Так же при работе с PHP мы можем использовать много разных функций, не зная о том, что эти функции нужно подключать вместе с другими библиотеками, поэтому предлагаю сразу грузить как можно больше расширений:
extension=php_bz2.dll
extension=php_curl.dll
extension=php_gd2.dll
extension=php_mbstring.dll
extension=php_mcrypt.dll
extension=php_mhash.dll
extension=php_mysql.dll
extension=php_mysqli.dll
extension=php_openssl.dll
extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_sockets.dll
extension=php_zip.dll

...
end

Примечание

    Эта статья изначально была написана летом 2010 года. Тогда я еще только начинал свой профессиональный путь в мир программирования, в том числе и в мир написания статей/документации. Сама статья была вполне хороша, потому эта версия это скорее рерайт. Поводом для рерайта стало то, что статья была написана на суржике, ну и то, что статья содержала чрезмерное количество моих взглядов на жизнь, которые я считал единственно верными. Т.е. это все та же статья, те же инструменты и те же действия, только все обновлено к  более новым версиям, беспристрастней и для большей аудитории(на русском). Ну и да, предыдущая статья была написанная для windows xp, когда же я писал эту версию статьи, я уже использовал windows 7. Тем не менее разницы не было замечено. Т.е. эта конфигурация одинаково будет работать как под Windows XP, так и под Windows 7.


Comments